mysql - 为什么我不能使用这个参数?

标签 mysql mysql-error-1064

我试图在 UNION 的两个选择中使用“id”,有什么方法可以做到吗?

SELECT id, name, (

    SELECT DATE_FORMAT(a.time_added, '%d/%m/%Y') AS 'last_update' FROM analysis_groups ag, analysis_group_relation agr, analysis a WHERE ag.id = id AND agr.group_id = ag.id AND a.id = agr.analysis_id AND a.type != 3
    UNION
    SELECT DATE_FORMAT(a.time_added, '%d/%m/%Y') AS 'last_update' FROM analysis_groups ag, analysis_group_relation agr, analysis a, user_analysis ua WHERE agr.group_id = ag.id AND a.id = agr.analysis_id AND a.type = 3 AND ua.analysis_id = a.id AND a.id = '5bf1d6c5242f1' ORDER BY last_update LIMIT 1
) AS last_update_date 

FROM analysis_groups WHERE id != '0' ORDER BY last_update_date DESC LIMIT 20;

最佳答案

简短的答案是:在主查询中为 analysis_groups 定义一个别名,并在 WHERE 子句中引用它,如下所示

SELECT id, name, (

    SELECT DATE_FORMAT(a.time_added, '%d/%m/%Y') AS 'last_update' FROM analysis_groups ag, analysis_group_relation agr, analysis a WHERE ag.id = ag2.id AND agr.group_id = ag.id AND a.id = agr.analysis_id AND a.type != 3
    UNION
    SELECT DATE_FORMAT(a.time_added, '%d/%m/%Y') AS 'last_update' FROM analysis_groups ag, analysis_group_relation agr, analysis a, user_analysis ua WHERE agr.group_id = ag.id AND a.id = agr.analysis_id AND a.type = 3 AND ua.analysis_id = a.id AND a.id = '5bf1d6c5242f1' ORDER BY last_update LIMIT 1
) AS last_update_date 

FROM analysis_groups ag2 WHERE id != '0' ORDER BY last_update_date DESC LIMIT 20;

关于mysql - 为什么我不能使用这个参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53439188/

相关文章:

mysql - 创建事件在 MySQL 中出现语法错误

php - MySQL 查询 : Epoch Time Filter

php - 检查电子邮件地址是否已被使用

php - UTF-8贯穿始终

javascript - 如何使用输入从数组值中插入多行

mysql - #1064、xampp、phpMyAdmin、MYSQL - 为什么我的 mySQL 语法有错误?

sql - Mysql语法帮助

php - 谷歌图表 API 数据

Java登录MySQL数据库

mysql - 错误 : Inserting values from other table via variable