You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用SQL将PROVIDERS表中的ID替换为LOCATIONS表的名称?

解决PROVIDERS与LOCATIONS表关联查询问题

要实现把PROVIDERS表中的departure_id、destination_id替换为LOCATIONS表对应的location_name,你需要两次关联LOCATIONS表,并给表取不同别名来区分出发地和目的地的关联。正确的SQL语句如下:

SELECT 
    p.id,
    p.provider_code,
    dep.location_name AS departure_name,
    dest.location_name AS destination_name
FROM PROVIDERS p
INNER JOIN LOCATIONS dep ON p.departure_id = dep.location_id
INNER JOIN LOCATIONS dest ON p.destination_id = dest.location_id;

关键说明

  • 给LOCATIONS表分别取别名dep(对应出发地)和dest(对应目的地),避免关联时字段冲突
  • 两次INNER JOIN分别关联PROVIDERS的departure_id和destination_id到LOCATIONS的location_id
  • 确保两张表的关联字段类型一致(比如都是整数类型),否则会出现关联失败返回空的情况

Python执行示例

假设使用sqlite3库,代码示例如下:

import sqlite3

conn = sqlite3.connect('your_database.db')
cursor = conn.cursor()

# 执行关联查询
cursor.execute("""
SELECT 
    p.id,
    p.provider_code,
    dep.location_name AS departure_name,
    dest.location_name AS destination_name
FROM PROVIDERS p
INNER JOIN LOCATIONS dep ON p.departure_id = dep.location_id
INNER JOIN LOCATIONS dest ON p.destination_id = dest.location_id;
""")

result = cursor.fetchall()
print(result)  # 输出格式将符合期望:[(1, 'DEVO', 'Paris', 'London'), (2, 'PEPO', 'London', 'Paris')]

conn.close()

如果之前返回空列表,大概率是关联条件写错(比如误写了LOCATIONS的关联字段),或者PROVIDERS表中存在departure_id/destination_id在LOCATIONS表中无对应记录的情况——若想保留这些行,可以把INNER JOIN替换为LEFT JOIN。

内容的提问来源于stack exchange,提问作者Greezy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 12:34:52