Mysql 如何在更少的查询中高效地为多个列多次连接同一个表?
我必须在mysql查询中多次连接一个表,我不想对每一列进行左连接。我的表和sql是-Mysql 如何在更少的查询中高效地为多个列多次连接同一个表?,mysql,sql,join,left-join,Mysql,Sql,Join,Left Join,我必须在mysql查询中多次连接一个表,我不想对每一列进行左连接。我的表和sql是- 表(mst)- 储物架- SQL- 如何在不使用store\u pick table的多个左联接的情况下执行此操作?不需要所有这些联接,您可以使用如下表达式: SELECT tm.name, MAX(CASE WHEN sp1.pick_id = tm.result1 THEN sp1.pick_name END) AS Result1, MAX(CASE WHEN sp1.pick_id = tm
表(mst)- 储物架- SQL-
如何在不使用store\u pick table的多个左联接的情况下执行此操作?不需要所有这些联接,您可以使用如下表达式:
SELECT
tm.name,
MAX(CASE WHEN sp1.pick_id = tm.result1 THEN sp1.pick_name END) AS Result1,
MAX(CASE WHEN sp1.pick_id = tm.result2 THEN sp1.pick_name END) AS Result2,
MAX(CASE WHEN sp1.pick_id = tm.result3 THEN sp1.pick_name END) AS Result3
FROM Table_mst as tm
LEFT JOIN store_pick AS sp1 ON sp1.store_id = 'result'
GROUP BY tm.name;
| name | Result1 | Result2 | Result3 |
|------|---------|---------|---------|
| A | pass | supply | supply |
| B | fail | fail | fail |
| C | grace | grace | pass |
| D | ufm | supply | fail |
| E | fail | fail | fail |
规范化数据。预期结果是什么?现有查询有什么问题?是的,你好。做什么?我们无法读懂你的心思。请阅读并采取行动。这也是一个常见问题,谷歌我的评论再谷歌问题。像这样使用
CASE
对小表很有效,这是解决这个问题的好方法。我只能补充一点,你可以把它放在一个视图中,以重用代码给读者:这个答案被称为条件聚合,这是一种常用的数据透视(从长到宽)查询数据的方法。
SELECT
tm.name,
sp1.pick_name AS result1,
sp2.pick_name AS result2,
sp3.pick_name AS result3,
sp4.pick_name AS result4
FROM table_mst AS tm
LEFT JOIN store_pick AS sp1
ON sp1.pick_id = tm.result1
AND sp1.store_id = 'result'
LEFT JOIN store_pick AS sp2
ON sp2.pick_id = tm.result2
AND sp2.store_id = 'result'
LEFT JOIN store_pick AS sp3
ON sp3.pick_id = tm.result3
AND sp3.store_id = 'result'
LEFT JOIN store_pick AS sp4
ON sp4.pick_id = tm.result4
AND sp4.store_id = 'result'
SELECT
tm.name,
MAX(CASE WHEN sp1.pick_id = tm.result1 THEN sp1.pick_name END) AS Result1,
MAX(CASE WHEN sp1.pick_id = tm.result2 THEN sp1.pick_name END) AS Result2,
MAX(CASE WHEN sp1.pick_id = tm.result3 THEN sp1.pick_name END) AS Result3
FROM Table_mst as tm
LEFT JOIN store_pick AS sp1 ON sp1.store_id = 'result'
GROUP BY tm.name;
| name | Result1 | Result2 | Result3 |
|------|---------|---------|---------|
| A | pass | supply | supply |
| B | fail | fail | fail |
| C | grace | grace | pass |
| D | ufm | supply | fail |
| E | fail | fail | fail |