Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
除了MySQL之外的其他选项_Mysql_Sql - Fatal编程技术网

除了MySQL之外的其他选项

除了MySQL之外的其他选项,mysql,sql,Mysql,Sql,我必须在MySQL中编写这样的查询: SELECT * FROM Tab1 EXCEPT SELECT * FROM Tab1 WHERE int_attribute_of_Tab1>0 但是MySQL不支持关键字,除了。 是否有一个标准模式可以正确使用另一个操作符来模拟MySQL中的操作 您可以在 SELECT * FROM Tab1 WHERE id NOT IN ( SELECT id FROM Tab1 WHERE int_attribute

我必须在MySQL中编写这样的查询:

SELECT * 
FROM Tab1
EXCEPT
SELECT * 
FROM Tab1 
WHERE int_attribute_of_Tab1>0
但是MySQL不支持关键字,除了。 是否有一个标准模式可以正确使用另一个操作符来模拟MySQL中的操作

您可以在

SELECT * 
FROM Tab1
WHERE id  NOT IN (
    SELECT id 
    FROM Tab1 
    WHERE int_attribute_of_Tab1>0
)
试试这个

SELECT * 
FROM Tab1
WHERE [....] NOT EXISTS 
(SELECT * 
FROM Tab1 
WHERE int_attribute_of_Tab1>0) 
几个定义 SqlServer除外 从EXCEPT运算符左侧的查询返回任何不同的值,这些值不是从右侧查询返回的。 PLsql负号 语句将结果与减号运算符相结合,减号运算符只返回第一个查询返回的唯一行,而不返回第二个查询返回的唯一行

一个学究式的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。

当然可以从Tab1中选择*,其中int\u attribute\u of_Tab1=0可以吗?或者第二个选择中的tab1应该是tab2吗?如果我有两列,似乎不起作用:从tab1中选择distinct col1,col2,其中col1,col2不插入distinct col1,col2从tab2中选择distinct col1,col2知道我做错了什么吗?@MrZH6,以防你还在想,不能在子查询中选择多个列,因为必须将其与主查询中的单个列进行比较。但您可以在其他子查询中选择多个列,如派生表。即使SQLite也支持,除了,运气不好。