MYSQL Union All with alias

tat*_*ler 4 mysql union alias

我正在尝试查找 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 下的评论表中。

我收到此错误,似乎无法弄清楚如何正确添加别名。

每个派生表必须有自己的别名

Mah*_*mal 5

错误很明显,为该表添加一个别名:

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 BYSELECT *不推荐,它不与ANSI SQL遵守。它在 mysql 中可以正常工作,但尽量不要将SELECT不在GROUP BY集合函数中的列放在子句中。在您的情况下,MySQL 将为这些列获取任意值。