我正在尝试查找 app 表中存在的所有应用程序,这些应用程序尚未在评论表中进行评论。
SELECT *
FROM (
SELECT app_id FROM apps
UNION ALL
SELECT app_id FROM reviews
)
GROUP BY app_id
HAVING COUNT(*) = 1
Run Code Online (Sandbox Code Playgroud)
在找到哪些应用程序没有审核后,我想从 app 表中获取所有值,以便列出仍需要审核的应用程序。app_id 对应于apps 表中应用程序信息的关键字,当一个应用程序被审核时,app_id 将与评论和相关字段中的排名一起输入到app_id 下的评论表中。
我收到此错误,似乎无法弄清楚如何正确添加别名。
每个派生表必须有自己的别名
错误很明显,为该表添加一个别名:
SELECT *
FROM
(
SELECT app_id FROM apps
UNION ALL
SELECT app_id FROM reviews
) AS t -- < -------------- this
GROUP BY app_id
HAVING COUNT(*) = 1;
Run Code Online (Sandbox Code Playgroud)
需要注意的是:在GROUP BY与SELECT *不推荐,它不与ANSI SQL遵守。它在 mysql 中可以正常工作,但尽量不要将SELECT不在GROUP BY集合函数中的列放在子句中。在您的情况下,MySQL 将为这些列获取任意值。