【问题标题】:Select columns from multiple tables从多个表中选择列
【发布时间】:2016-02-28 19:36:10
【问题描述】:

我有多个具有相同主键字段但没有其他相同字段的表。我想从与特定主键匹配的所有表中选择一组列,如下所示:

SELECT T1.a, T2.b, ..., TN.z FROM T1, T2, ..., TN WHERE T1.pk = "abc"

【问题讨论】:

  • 您是否尝试过使用joinselect ... from t1 join t2 on t1.id = t2.id...?

标签: sql postgresql django-database


【解决方案1】:
SELECT T1.a, T1.b, ..., TN.z
FROM T1 INNER JOIN T2 ON T1.pk = T2.pk
INNER JOIN T3 on T1.pk = T3.pk
...
INNER JOIN TN on T1.pk = TN.pk
AND TN.pk = "abc"

或者以更短的形式(感谢@Abelisto!)。

SELECT T1.a, T1.b, ..., TN.z
FROM T1 JOIN T2 using(pk)
JOIN T3 using(pk)
...
JOIN TN using(pk)
WHERE TN.pk = "abc"

【讨论】:

  • 有几件事可以使查询更短:在 Postgres 中默认情况下连接是内部的,所以 INNER JOIN 等于 JOIN;如果列具有相同的名称,则可以编写 t1 join t2 using(pk) 而不是 t1 join t2 on t1.pk=t2.pk
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-19
  • 2020-03-21
  • 2020-07-04
  • 2012-08-20
  • 2017-10-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多