Mysql 简单的SQL连接查询(我想)
有人能告诉我为什么我在使用完全联接时,在“where子句”中出现错误:未知列“cdu\u user\u progress.uid”,但在仅使用联接时却没有?我正在使用MySQLMysql 简单的SQL连接查询(我想),mysql,sql,Mysql,Sql,有人能告诉我为什么我在使用完全联接时,在“where子句”中出现错误:未知列“cdu\u user\u progress.uid”,但在仅使用联接时却没有?我正在使用MySQL SELECT cdu_lessons.*, SUBSTRING_INDEX(GROUP_CONCAT(CASE WHEN game_id = 0 THEN score END ORDER BY date), ',', 1) AS game0_first, MAX(CASE WHEN game_
SELECT
cdu_lessons.*,
SUBSTRING_INDEX(GROUP_CONCAT(CASE WHEN game_id = 0 THEN score END ORDER BY date), ',', 1) AS game0_first,
MAX(CASE WHEN game_id = 0 THEN score END) AS game0_max,
SUBSTRING_INDEX(GROUP_CONCAT(CASE WHEN game_id = 1 THEN score END ORDER BY date), ',', 1) AS game1_first,
MAX(CASE WHEN game_id = 1 THEN score END) AS game1_max,
SUBSTRING_INDEX(GROUP_CONCAT(CASE WHEN game_id = 2 THEN score END ORDER BY date), ',', 1) AS game2_first,
MAX(CASE WHEN game_id = 2 THEN score END) AS game2_max,
SUBSTRING_INDEX(GROUP_CONCAT(CASE WHEN game_id = 3 THEN score END ORDER BY date), ',', 1) AS game3_first,
MAX(CASE WHEN game_id = 3 THEN score END) AS game3_max,
SUBSTRING_INDEX(GROUP_CONCAT(CASE WHEN game_id = 4 THEN score END ORDER BY date), ',', 1) AS game4_first,
MAX(CASE WHEN game_id = 4 THEN score END) AS game4_max,
SUBSTRING_INDEX(GROUP_CONCAT(CASE WHEN game_id = 5 THEN score END ORDER BY date), ',', 1) AS game5_first,
MAX(CASE WHEN game_id = 5 THEN score END) AS game5_max
FROM cdu_user_progress
FULL JOIN cdu_lessons ON cdu_lessons.id = cdu_user_progress.lesson_id
WHERE cdu_user_progress.uid = 145
GROUP BY lesson_id
MySQL缺乏对完全外部连接的支持 因此,如果您想在MySQL上模拟完全连接,请看一看 通常建议的解决方法如下所示:
SELECT
cdu_lessons.*,
SUBSTRING_INDEX(GROUP_CONCAT(CASE WHEN game_id = 0 THEN score END ORDER BY date), ',', 1) AS game0_first,
MAX(CASE WHEN game_id = 0 THEN score END) AS game0_max,
SUBSTRING_INDEX(GROUP_CONCAT(CASE WHEN game_id = 1 THEN score END ORDER BY date), ',', 1) AS game1_first,
MAX(CASE WHEN game_id = 1 THEN score END) AS game1_max,
SUBSTRING_INDEX(GROUP_CONCAT(CASE WHEN game_id = 2 THEN score END ORDER BY date), ',', 1) AS game2_first,
MAX(CASE WHEN game_id = 2 THEN score END) AS game2_max,
SUBSTRING_INDEX(GROUP_CONCAT(CASE WHEN game_id = 3 THEN score END ORDER BY date), ',', 1) AS game3_first,
MAX(CASE WHEN game_id = 3 THEN score END) AS game3_max,
SUBSTRING_INDEX(GROUP_CONCAT(CASE WHEN game_id = 4 THEN score END ORDER BY date), ',', 1) AS game4_first,
MAX(CASE WHEN game_id = 4 THEN score END) AS game4_max,
SUBSTRING_INDEX(GROUP_CONCAT(CASE WHEN game_id = 5 THEN score END ORDER BY date), ',', 1) AS game5_first,
MAX(CASE WHEN game_id = 5 THEN score END) AS game5_max
FROM cdu_user_progress
LEFT JOIN cdu_lessons ON cdu_lessons.id = cdu_user_progress.lesson_id
WHERE cdu_user_progress.uid = 145
GROUP BY lesson_id
Union ALL
SELECT
cdu_lessons.*,
SUBSTRING_INDEX(GROUP_CONCAT(CASE WHEN game_id = 0 THEN score END ORDER BY date), ',', 1) AS game0_first,
MAX(CASE WHEN game_id = 0 THEN score END) AS game0_max,
SUBSTRING_INDEX(GROUP_CONCAT(CASE WHEN game_id = 1 THEN score END ORDER BY date), ',', 1) AS game1_first,
MAX(CASE WHEN game_id = 1 THEN score END) AS game1_max,
SUBSTRING_INDEX(GROUP_CONCAT(CASE WHEN game_id = 2 THEN score END ORDER BY date), ',', 1) AS game2_first,
MAX(CASE WHEN game_id = 2 THEN score END) AS game2_max,
SUBSTRING_INDEX(GROUP_CONCAT(CASE WHEN game_id = 3 THEN score END ORDER BY date), ',', 1) AS game3_first,
MAX(CASE WHEN game_id = 3 THEN score END) AS game3_max,
SUBSTRING_INDEX(GROUP_CONCAT(CASE WHEN game_id = 4 THEN score END ORDER BY date), ',', 1) AS game4_first,
MAX(CASE WHEN game_id = 4 THEN score END) AS game4_max,
SUBSTRING_INDEX(GROUP_CONCAT(CASE WHEN game_id = 5 THEN score END ORDER BY date), ',', 1) AS game5_first,
MAX(CASE WHEN game_id = 5 THEN score END) AS game5_max
FROM cdu_user_progress
RIGHT JOIN cdu_lessons ON cdu_lessons.id = cdu_user_progress.lesson_id
WHERE cdu_user_progress.uid = 145
GROUP BY lesson_id
mysql中不支持
完全连接
,至少不支持直接从cdu\u user\u progress进行
完全连接…
被解释为来自cdu的\u用户\u进度为完全
。
本质上,它用别名FULL替换表名