如何连接两个查询结果?

时间:2012-06-19 14:13:08

标签: postgresql join postgresql-9.0

我想在特定时间内检索所有ID。然而,时间戳, 存储在不同的表中:

Table A has column  my_id
Table B has columns my_id, timestamp

我想要像

这样的东西
SELECT
  id,
  time
FROM
  (SELECT my_id AS id FROM A) q1,
  (SELECT timestamp AS time FROM B WHERE my_id = id) q2
;

但是如何在不同的子查询中获取id的值?在那儿 这个问题的优雅解决方案?

2 个答案:

答案 0 :(得分:1)

我在第二个子查询中看到你试图链接这两个表:

(SELECT my_id AS id FROM A) q1,
(SELECT timestamp AS time FROM B WHERE my_id = id) q2

如果两个ID必须等于:

SELECT a.my_id as id, b.timestamp as time
FROM A a
JOIN B b ON (a.my_id = b.my_id);

我希望这会有所帮助。

答案 1 :(得分:1)

简单:

SELECT my_id AS id, b.my_ts
FROM   a
JOIN   b USING (my_id);
  • FROM A a(已被告知)是无稽之谈,因为我引用the manual
  

引用标识符也会使其区分大小写,而不引用标识符   名称总是折叠成小写。

  • 在PostgreSQL中被允许时,类型名称timetimestamp是每个SQL标准中的保留字,不应用作标识符。

  • USINGsyntactical shorthand, mostly