我想在特定时间内检索所有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
的值?在那儿
这个问题的优雅解决方案?
答案 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中被允许时,类型名称time
和timestamp
是每个SQL标准中的保留字,不应用作标识符。