我的数据库 MySQL 遇到这种情况:
TABLE_A
Cod | Value1 | Value2 |Value3TABLE_B
Cod | Value4 | Value5TABLE_C
Cod | Value6
我使用这个查询:
SELECT
table_a.value1 AS Number,
table_a.value2 AS Date,
table_b.name AS Name,
table_b.age AS Age
FROM
table_a
LEFT JOIN table_c
ON table_a.cod = table_c.cod
AND table_c.value5 = 1
LEFT JOIN table_b
ON table_c.cod = table_b.cod
WHERE value3 = 'MY_SEARCH_VALUE'
ORDER BY table_a.cod ASC
一切都很好,但现在我必须从 TABLE_A 中选择元素(与 TABLE_B 和 TABLE_C 连接),并与 TABLE_A 上的一个元素连接。
例如,当 TABLE_A.Cod = 'X'
时,还选择 TABLE_A.Cod ='Y'
和 TABLE_A.Cod ='Z'
当 TABLE_A.Cod = 'ALL_OTHERS_CODE'
使用上面的查询时,情况正好相反。
编辑:(从下面的OP评论中添加):
我的查询结果
SELECT
TABLE_A.Value1 AS Number,
TABLE_A.Value2 AS Date,
TABLE_B.name AS Name,
TABLE_B.age AS Age
FROM
TABLE_A
LEFT JOIN TABLE_C
ON TABLE_A.Cod = TABLE_C.Cod
AND TABLE_C.Value5 =1
LEFT JOIN TABLE_B
ON TABLE_C.Cod = TABLE_B.Cod
WHERE Value3 = 'DEFENDER'
ORDER BY TABLE_A.Cod ASC
例如:(12
- 14/01/01
- John
- 18
)
我希望结果更像上面的结果。如果我应该尝试其他代码,例如 'DEFENDER_A'
并且我希望得到: (12
, 14/01/01
, 约翰
、18
--- 5
、14/01/01
、弗兰克
、19
)
最佳答案
像这样更改你的代码。
Select
TABLE_A.Value1 AS Number,
TABLE_A.Value2 AS Date,
TABLE_B.name AS Name,
TABLE_B.age AS Age
FROM TABLE_A LEFT JOIN TABLE_C ON TABLE_A.Cod = TABLE_C.Cod
AND TABLE_C.Value5 =1 LEFT JOIN TABLE_B ON TABLE_A.Cod = TABLE_B.Cod
WHERE Value3 = 'DEFENDER'
ORDER BY TABLE_A.Cod ASC
关于mysql - SQL SELECT CASE 与 SELECT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21824784/