Mysql查询:连接

Mysql查询:连接,mysql,Mysql,我有以下表格: 传输表: ID | storagefrom | storageto 1 | 2 | 3 存储表: ID | Name 2 | Kitchen 3 | Main 我希望得到以下结果: Storage1 | Storage2 Kitchen | Main 这是我的疑问: SELECT storages.name as Storage1, storages.name as Storage2 FROM transfers LEFT JOIN st

我有以下表格:

传输表:

ID | storagefrom | storageto 
1  | 2           | 3
存储表:

ID | Name
2  | Kitchen
3  | Main
我希望得到以下结果:

Storage1 | Storage2 
Kitchen   | Main
这是我的疑问:

SELECT storages.name as Storage1, storages.name as Storage2
FROM transfers 
LEFT JOIN storages ON storages.id = transfers.storagefrom
LEFT JOIN storages ON storages.id = transfers.storageto

有什么提示吗?

只需将条件聚合与
大小写表达式和1
连接一起使用即可:

SELECT t.id,
       MAX(CASE WHEN s.id = t.storagefrom THEN s.name END) as storage_1,
       MAX(CASE WHEN s.id = t.storageto THEN s.name END) as storage_2
FROM transfer t
LEFT JOIN storages s 
 ON(s.id IN(t.storagefrom,t.storageto))
GROUP BY t.id

如果它只有一条记录,而您不关心
transfer.id
,请将其从选择列表中删除,并删除
GROUP BY
子句。

只需为您的表添加别名即可

SELECT s1.name as Storage1, s2.name as Storage2
FROM transfers 
LEFT JOIN storages AS s1 ON s1.id = transfers.storagefrom
LEFT JOIN storages AS s2 ON s2.id = transfers.storageto
试一试

参考:

也许这会对你有所帮助:
SELECT T.ID,
       S1.Name Storage1,
       S2.name Storage2 
FROM transfers T
LEFT JOIN storages S1 ON S1.ID = T.storagefrom
LEFT JOIN storages S2 ON S2.ID = T.storageto