php - SQL查询将两列与另一表中的一列进行比较(并获取两个值)

标签 php mysql sql-server join

是否可以根据table1中两列的ID值,在table2中获得它们的等值?

我的table1看起来像这样:

id | origin | destiny
-- | ------ | -------
1  | 2      | 3
2  | 4      | 5

table2,如下所示:

id | name
-- | ----
1  | bla
2  | asd
3  | dfg
4  | qwe
5  | tle

我想要得到这样的东西:

id | origin | destiny | nameOrigin | nameDestiny
-- | ------ | ------- | ---------- | -----------
1  | 2      | 3       | asd        | dfg
2  | 4      | 5       | qwe        | tle

我尝试进行两个查询:

SELECT
    t1.origin, 
    t1.destiny,
    t2.name
FROM 
    table1 t1 
INNER JOIN table2 t2 ON t1.origin = t2.id

和:

SELECT
    t1.origin, 
    t1.destiny,
    t2.name as destinyName
FROM 
    table1 t1 
INNER JOIN table2 t2 ON t1.destiny = t2.id

但是,如果我从一个表中删除一个值,另一个表会继续索引该行,因此存在未定义的偏移问题。

最佳答案

您可以加入第二个表两次:

SELECT      t1.id,
            t1.origin, 
            t1.destiny,
            o.name as nameOrigin,
            d.name as nameDestiny
FROM        table1 t1 
INNER JOIN  table2 o ON t1.origin = o.id
INNER JOIN  table2 d ON t1.destiny = d.id

注意:“命运”“目的地”不同。

关于php - SQL查询将两列与另一表中的一列进行比较(并获取两个值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43322723/

相关文章:

php - 优化慢速 SQL 查询

Php Mysql NOT IN array 只影响数组中的第一个结果

php - WAMPServer phpMyadmin 超过最大执行时间 360 秒

mysql - 为什么key_len大于索引长度?

c# - 我可以使用无键实体类型在 Entity Framework Core 中查询 CHANGETABLE 吗?

sql - 如何将现有 SQL Server 登录名连接到同名的现有 SQL Server 数据库用户

SQL Server 2005 - 批量插入失败

php - 按日期显示多个 MySQL 表的结果

php - 选择 DISTINCT 但回显全部?

php - 绑定(bind)参数数组 php mysql