我必须在MySQL中编写这样的查询:
SELECT *
FROM Tab1
EXCEPT
SELECT *
FROM Tab1
WHERE int_attribute_of_Tab1>0
但MySQL并不支持关键字 EXCEPT 。 是否有标准模式正确使用另一个模拟MySQL中的except的运算符?
答案 0 :(得分:9)
您可以使用NOT IN
SELECT *
FROM Tab1
WHERE id NOT IN (
SELECT id
FROM Tab1
WHERE int_attribute_of_Tab1>0
)
答案 1 :(得分:1)
试试这个
SELECT *
FROM Tab1
WHERE [....] NOT EXISTS
(SELECT *
FROM Tab1
WHERE int_attribute_of_Tab1>0)
答案 2 :(得分:0)
几个定义 SqlServer https://docs.microsoft.com/en-us/sql/t-sql/language-elements/set-operators-except-and-intersect-transact-sql除外 返回EXCEPT运算符左侧的查询中的任何不同值,这些值也不是从右侧查询返回的。 PLsql https://docs.oracle.com/cd/B19306_01/server.102/b14200/queries004.htm MINUS 语句将结果与MINUS运算符组合在一起,后者仅返回第一个查询返回的唯一行,但不返回第二个
返回的唯一行对mysql的迂腐翻译将是
SELECT distinct t1.*
FROM Tab1 as t1
left outer join
(SELECT *
FROM Tab1
WHERE int_attribute_of_Tab1>0) as t2 on t1.id = t2.id
where t2.id is null;
假设有一个id列,我不想在很多列上使用distinct。