sql - 每个派生表都必须有自己的别名错误

标签 sql mysql

运行以下查询时出现该错误:

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 

我知道我需要添加别名,但我不确定在哪里

最佳答案

您需要子查询的别名,并且您需要将条件应用于您联合的两个查询:

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

或返回数据,以便您可以在外部查询中应用条件:

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

关于sql - 每个派生表都必须有自己的别名错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3436009/

相关文章:

sql - 按连续重复标志对带时间戳的记录进行分组

PHP 获取两行但仅从最后一行上传文件

sql - 用sql查询excel

python - 使用Python查看表是否存在

sql - postgresql 两个嵌套连接和连接中的数组

sql - pyspark 将列转换为行

MySQL : How to Create table dynamically in stored procedure?

mysql - 创建 Amazon RDS 数据库的本地副本

php - 在mysql表的列中按其位置(以逗号分隔)一次删除一个值

mysql - SQL错误[1054] [42s22] : unknown column 'orderdetails.productCode in ' on clause'