![](/img/trans.png)
[英]MySQL select with INNER JOIN and CASE WHEN in INNER JOIN
[英]MySQL multiple SELECT query with CASE WHEN, INNER JOIN and GROUP BY1
稍后,我嘗試使用內部聯接和按選項分組來構建多選查詢,但我並不真正理解為什么我的查詢不起作用(我對SQL和php不熟悉,也許就是原因)。 我收到錯誤消息,提示我的語法錯誤。
我有多個具有相同結構的表,並且希望在一個查詢中將某些情況按一個公共變量分組。
查詢是這樣的:
SELECT
(SELECT Var1,
MAX( CASE WHEN Var2 ='2015' AND Var3='A1_U18' THEN Var4 ELSE 0 END ) AS 'A1_U18_0',
MAX( CASE WHEN Var2 ='2015' AND Var3='A31_U6' THEN Var4 ELSE 0 END ) AS 'A31_U6_0'
FROM table_a) AS a,
(SELECT Var1,
MAX( CASE WHEN Var2 ='2015' AND Var3='B21_U3' THEN Var4 ELSE 0 END ) AS 'B21_U3_0',
MAX( CASE WHEN Var2 ='2015' AND Var3='B21_U6' THEN Var4 ELSE 0 END ) AS 'B21_U6_0'
FROM table_b) AS b,
(SELECT Var1,
MAX( CASE WHEN Var2 ='2015' AND Var3='C21_U3' THEN Var4 ELSE 0 END ) AS 'C21_U3_0',
MAX( CASE WHEN Var2 ='2015' AND Var3='C21_U6' THEN Var4 ELSE 0 END ) AS 'C21_U6_0'
FROM table_c) AS c
INNER JOIN a b
ON a.Var1 = b.Var1
INNER JOIN a c
ON a.Var1 = c.Var1
GROUP BY a.Var1
我究竟做錯了什么?
FROM a
'
,這是針對字符串的。 我強烈建議您做一個基本的mySql教程, 這對您有很大幫助
但是您可能需要這樣的東西。
SELECT a.*,
b.`B21_U3_0`, b.`B21_U6_0`,
c.`C21_U3_0`, c.`C21_U6_0`
FROM
(SELECT Var1,
MAX( CASE WHEN Var2 ='2015' AND Var3='A1_U18'
THEN Var4 ELSE 0 END ) AS `A1_U18_0`,
MAX( CASE WHEN Var2 ='2015' AND Var3='A31_U6'
THEN Var4 ELSE 0 END ) AS `A31_U6_0`
FROM table_a
GROUP BY Var1
) AS a
JOIN
(SELECT Var1,
MAX( CASE WHEN Var2 ='2015' AND Var3='B21_U3'
THEN Var4 ELSE 0 END ) AS `B21_U3_0`,
MAX( CASE WHEN Var2 ='2015' AND Var3='B21_U6'
THEN Var4 ELSE 0 END ) AS `B21_U6_0`
FROM table_b
GROUP BY Var1
) AS b
ON a.Var1 = b.Var1
JOIN
(SELECT Var1,
MAX( CASE WHEN Var2 ='2015' AND Var3='C21_U3'
THEN Var4 ELSE 0 END ) AS `C21_U3_0`,
MAX( CASE WHEN Var2 ='2015' AND Var3='C21_U6'
THEN Var4 ELSE 0 END ) AS `C21_U6_0`
FROM table_c
GROUP BY Var1
) AS c
ON a.Var1 = c.Var1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.