左外连接在条件

时间:2018-04-30 10:40:53

标签: mysql join outer-join

我在一个名为“mytable”的mysql 5.7数据库中有一个表格,如下所示:

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

从这个表中我只需要选择flag = 0的行,然后从那些行中删除所有与flag = 1的标题相同的行。结果如下:

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

我如何撰写查询?感谢。

2 个答案:

答案 0 :(得分:1)

只需使用子查询并将其与MySQL的IN()函数结合使用即可。以下内容适用:

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

SQL Fiddle

答案 1 :(得分:0)

执行LEFT OUTER JOIN

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

执行LEFT OUTER JOIN,然后在其中一个连接列中检查NULL,以确保找不到匹配的记录。