我在一个名为“mytable”的mysql 5.7数据库中有一个表格,如下所示:
--------------------
| title | flag |
|--------------------|
| first | 0 |
| first | 1 |
| second | 0 |
--------------------
从这个表中我只需要选择flag = 0的行,然后从那些行中删除所有与flag = 1的标题相同的行。结果如下:
--------------------
| title | flag |
|--------------------|
| second | 0 |
--------------------
我如何撰写查询?感谢。
答案 0 :(得分:1)
只需使用子查询并将其与MySQL的IN()
函数结合使用即可。以下内容适用:
SELECT title,
flag
FROM mytable
WHERE flag = 0
AND title NOT IN( SELECT title FROM mytable WHERE flag = 1 );
答案 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,以确保找不到匹配的记录。