[英]Joining tables on multiple conditions
我有一个小问题-因为我在SQL方面不是很有经验-关于在多个值上连接同一个表。 想象一下表1(称为字符串):
id value
1 value1
2 value2
然后是表2(称为地图):
id name description
1 1 2
因此名称和描述一样被引用到Strings表中。 如果没有第二个字段引用Strings表,那就没有问题,id只需对Strings.id = Maps.name进行内部联接。 但是现在id想要获取实际的字符串也用于描述。 对于同时返回我和我的SELECT来说,最好的方法是什么? 现在看起来像这样:
SELECT Maps.id, Strings.value AS mapName FROM Maps INNER JOIN Strings ON Strings.id = Maps.name;
但这显然仅涵盖本地化名称之一。 先感谢您。
您可以通过对同一张表的两个联接来做到这一点:
SELECT m.id, sname.value AS mapName, sdesc.value as description
FROM Maps m INNER JOIN
Strings sname
ON sname.id = m.name INNER JOIN
Strings desc
ON sdesc.id = m.description;
请注意,使用表别名来区分两个表。
只要您要从另一个表中获取单个值,就可以使用子查询进行以下查询:
SELECT id,
(SELECT value FROM Strings WHERE id = Maps.name) AS name,
(SELECT value FROM Strings WHERE id = Maps.description) AS description
FROM Maps
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.