在具有条件的同一表上的左外部联接

llew8vvj  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(306)

我在MySQL5.7DB中有一个名为“mytable”的表,它的结构如下:

--------------------
| title   |   flag   |
|--------------------|
| first   |   0      |
| first   |   1      |
| second  |   0      |
 --------------------

从这个表中,我只需要选择标志为0的行,并从中删除所有与标志为1的行具有相同标题的行。结果是这样的:

--------------------
| title   |   flag   |
|--------------------|
| second  |   0      |
 --------------------

如何编写查询?谢谢。

f8rj6qna

f8rj6qna1#

只需使用一个子查询并将其与mysql的 IN() 功能。以下将起作用:

SELECT title, 
       flag
 FROM mytable
WHERE flag = 0
  AND title NOT IN( SELECT title FROM mytable WHERE flag = 1 );

sql小提琴

xmd2e60i

xmd2e60i2#

做一个左外连接

SELECT a.*
FROM mytable a
LEFT OUTER JOIN mytable b
ON a.title = b.title
AND b.flag = 1
WHERE a.flag = 0
AND b.flag IS NULL

执行左外部联接,然后在其中一个联接列中检查null以确保找不到匹配的记录。

相关问题