是否有“没有”和“rdquo;语法如“ WHERE XXX NOT IN”?

我有几个查询获取将来要删除的行的ID号。 行号被放入一个字符串并放在下面的查询中(你看到“2”)。 我希望结果忽略行(就好像它们已被删除)。
SELECT MAX(T1.id) AS MAXid
FROM transactions AS T1 
WHERE id NOT IN ( 2 ) 
GROUP BY T1.position 
ORDER BY T1.position
我的猜测是我需要用“HAVING”替换“WHERE”行,但我找不到“NOT HAVING”语法。 当前写入此查询的方式,如果WHERE子句中列出了该位置的最大ID,则不会返回T1.position行。 如何让此查询为我提供T1.position的最大ID 同时忽略WHERE子句中列出的ID的行?     
已邀请:
HAVING id NOT IN (2)
应该工作;
[NOT] IN
不限于
WHERE
条款。     
HAVING不是您所需要的 - 只有在您想要按MAX过滤时才有用。例如,如果您不想获得所有MAXids但只想获得大于2的MAXID,则可以使用HAVING MAXid> 2。 据我所知,你想忽略一些行并计算剩余行的MAXid。为此,您的陈述对我来说是正确的。 Afaics如果在NOT IN子句中提及其所有ID,则结果集中不会列出该位置。这是合理的,因为没有什么可以计算MAX。如果某个位置的ID在NOT IN中列出,而其他位置不在,则应该获得未在NOT IN中列出的那些的MAX。 如果您的结果集与这些表达式不匹配,您应该调试插入到NOT IN的字符串 - 可能它意外地包含太多的ID。     
HAVING的有效语法是这样的
SELECT MAX(T1.id) AS MAXid
FROM transactions AS T1 
GROUP BY T1.position 
HAVING MAX(T1.id) NOT IN ( 2 ) 
ORDER BY T1.position
    
你尝试过吗?
SELECT MAX(t1.id) AS MAXid 
FROM transactions t1 
WHERE id  <> ANY (2) 
GROUP BY t1.position ORDER BY t1.position
    

要回复问题请先登录注册