1

特定の期間内にすべての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しかし、別のサブクエリ内での値を取得するにはどうすればよいですか?この問題に対する洗練された解決策はありますか?

4

2 に答える 2

1

よりシンプル:

SELECT my_id AS id, b.my_ts
FROM   a
JOIN   b USING (my_id);

識別子を引用すると大文字と小文字が区別されますが、引用符で囲まれていない名前は常に小文字になります。

  • PostgreSQLでは許可されていますが、タイプ名timetimestampはすべてのSQL標準で予約語であり、識別子として使用しないでください。

  • USING構文上の省略形で、ほとんどがです。

于 2012-06-25T03:13:42.703 に答える
1

2番目のサブクエリで、2つのテーブルをリンクしようとしていることがわかります。

(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);

これがお役に立てば幸いです。

于 2012-06-19T15:14:17.550 に答える