select * from temp where ssn not in (select distinct ssn from temp inner join
tamp where ssn,code_dars not in(select ssn,code_dars from temp));
错误1064(42000):您的SQL语法有错误;检查手册 对应于您的MySQL服务器版本,以便在'code_dars附近使用正确的语法 不在(从第3行选择ss,code_dars))'第3行
答案 0 :(得分:5)
DISTINCT
而非distink
。
row subqueries的语法是
SELECT * FROM t1
WHERE (col1,col2) = (SELECT col3, col4 FROM t2 WHERE id = 10);
或
SELECT * FROM t1
WHERE ROW(col1,col2) = (SELECT col3, col4 FROM t2 WHERE id = 10);
请注意列周围的大括号。
答案 1 :(得分:1)
我可以看到你的查询有几个问题......抱怨的是你只能指定一个字段不在另一个列表中,除非你连接它们一些如何,所以要么你做
... inner join tamp where code_dars not in (select code_dars from temp)
或者你做
... inner join tamp where ROW(ssn,code_dars) not in (select ssn, code_dars from temp)
在任何情况下我都不认为你的查询会给你你想要的东西......(那是什么:) ...
答案 2 :(得分:0)
报告的错误是你的“in”条件同时检查了2列,我不确定是否可能。
答案 3 :(得分:0)
我认为你不能做到
WHERE FOO, BAR CONDITION
您必须要么
WHERE FOO CONDITION AND BAR CONDITION
或像WHERE FOO+BAR NOT IN SELECT FOO+BAR FROM OTHERTABLE
(不推荐)那样可怕。