如果没有子查询,则为只有空帖的作者选择所有author_id

Pet*_*ete 1 mysql

给出下表:

+----+-----------+---------+
| id | author_id | content |
+----+-----------+---------+
| 1  | 1         |         |
+----+-----------+---------+
| 2  | 2         |         |
+----+-----------+---------+
| 3  | 1         |         |
+----+-----------+---------+
| 4  | 2         | XYZ     |
+----+-----------+---------+
Run Code Online (Sandbox Code Playgroud)

如何选择author_id仅包含无内容的帖子而不使用子查询的的列表?在这种情况下,我想要一个只返回author_id1 的查询。

这行得通,但是我想知道是否有一种方法不必为了性能而使用子查询。

SELECT author_id
FROM my_table
WHERE author_id NOT IN (
    SELECT author_id FROM my_table WHERE content != ''
)
GROUP BY author_id
Run Code Online (Sandbox Code Playgroud)

这是一个小提琴

Bil*_*win 5

您可以使用HAVING子句过滤组:

SELECT author_id
FROM my_table
GROUP BY author_id
HAVING MAX(LENGTH(content)) = 0
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用JOIN尝试查找具有非空白内容的任何行,而仅选择不匹配的行。

SELECT t1.author_id
FROM my_table AS t1
LEFT OUTER JOIN my_table AS t2 ON t1.author_id = t2.author_id
  AND LENGTH(t2.content) > 0
WHERE t2.author_id IS NULL
Run Code Online (Sandbox Code Playgroud)