Every derived table must have its own alias error

匿名 (未验证) 提交于 2019-12-03 02:29:01

问题:

I get that error when running the following query:

SELECT MAX( DateTime ) FROM ( (     SELECT DateTime     FROM Class_Searches ) UNION ALL (     SELECT DateTime     FROM Book_Searches ) ) WHERE User_Email = 'bla@blah.com' AND DateTime > NOW( ) - INTERVAL 30 DAY  

I know I need to add Aliases but I'm not sure where

回答1:

You need an alias for the subquery, and you need to apply the conditions either to both queries that you union:

SELECT MAX(DateTime) FROM (    SELECT DateTime   FROM Class_Searches   WHERE User_Email = 'bla@blah.com'   AND DateTime > NOW( ) - INTERVAL 30 DAY    UNION ALL    SELECT DateTime   FROM Book_Searches   WHERE User_Email = 'bla@blah.com'   AND DateTime > NOW( ) - INTERVAL 30 DAY  ) AS x 

or return data so that you can apply the condition in the outer query:

SELECT MAX(DateTime) FROM (    SELECT DateTime, User_Email   FROM Class_Searches    UNION ALL    SELECT DateTime, User_Email   FROM Book_Searches  ) AS x WHERE User_Email = 'bla@blah.com' AND DateTime > NOW( ) - INTERVAL 30 DAY 


回答2:

An alias is when you rename something, like SELECT t.time from table t, t is the alias for that table. In this case, you need to give an alias to the tables generated by the subqueries:

SELECT MAX( ut.DateTime ) FROM ( (     SELECT DateTime     FROM Class_Searches ) cs UNION ALL (     SELECT DateTime     FROM Book_Searches ) bs ) ut WHERE User_Email = 'bla@blah.com' AND ut.DateTime > NOW( ) - INTERVAL 30 DAY  

That still won't work though, because you don't have a User_Email column returned from the UNION. Thus, try:

SELECT MAX( ut.DateTime ) FROM ( (     SELECT DateTime, User_Email     FROM Class_Searches ) cs UNION ALL (     SELECT DateTime, User_Email     FROM Book_Searches ) bs ) ut WHERE ut.User_Email = 'bla@blah.com' AND ut.DateTime > NOW( ) - INTERVAL 30 DAY 

It's possible that that still won't work right because of the UNION syntax, but at least it's a lot closer.



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!