仅在字段存在时才加入

时间:2014-03-19 14:00:07

标签: mysql mariadb

我有这两张桌子。

una

| id | word | desc |

匹配

| id | word | review |

una 有几千行,表匹配最终将与 una 具有相同的大小,但目前只有几行。

我想要的是SELECT来自 una 的所有行,但不要显示匹配中也包含单词的行AND设置为review = 0

我需要使用IF EXISTS (....)吗?

3 个答案:

答案 0 :(得分:2)

select u.*
from una u
     left join match m on u.word=m.word
having m.word is null

答案 1 :(得分:2)

您将希望SQL沿着这一行:

SELECT * FROM una WHERE word IN (
  SELECT word FROM una
  MINUS
  SELECT word FROM match WHERE review = 0
)

更新:改进:

SELECT * 
FROM una 
WHERE word NOT IN (
  SELECT word 
  FROM match 
  WHERE review = 0
)

答案 2 :(得分:1)

SELECT *
FROM una AS u
WHERE u.word NOT IN (SELECT word FROM match)
AND u.review = 0

编辑 - 抱歉这是针对TSQL的,我不知道它是否与Mysql相同。