繁体   English   中英

在多个条件下联接表

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM