2017-08-21 17 views
2

内部結合を使用して2つのテーブルからいくつかのデータを照会しています。ここ postgresクエリの最初の行を取得する

は、私が唯一のそれぞれのuser_idからの最初の行をしたい、今すぐ

test_db=> select api_booking.install_ts, api_user.id from api_booking inner join api_user on api_booking.user_id=api_user.id and api_booking.status='completed' limit 20 ; 
      install_ts   | id 
-------------------------------+---- 
2016-09-15 09:53:42.511367+00 | 9 
2016-10-12 11:37:11.438715+00 | 9 
2016-10-21 08:55:49.57813+00 | 9 
2017-02-27 06:12:17.362996+00 | 9 
2017-02-27 06:24:59.316051+00 | 9 
2017-02-28 06:15:35.00841+00 | 9 
2017-02-28 06:34:57.766365+00 | 9 
2017-05-23 14:40:54.831525+00 | 14 
2017-06-05 07:47:39.78306+00 | 17 
2017-06-05 07:55:30.171103+00 | 17 
2016-12-06 06:47:43.860581+00 | 19 
2016-09-09 07:34:58.40589+00 | 20 
2016-11-16 09:09:24.466439+00 | 24 
2016-10-03 02:52:24.419793+00 | 24 
2017-05-02 03:48:02.843209+00 | 24 
2017-05-08 10:01:45.77093+00 | 24 
2016-09-09 12:08:27.503695+00 | 27 
2016-09-10 10:05:44.617737+00 | 27 
2016-09-11 10:08:22.791411+00 | 27 
2016-09-12 08:56:31.462979+00 | 27 
(20 rows) 

クエリです。私はこのために使用する必要がありますどのようなクエリ

このよう

  install_ts   | id 
-------------------------------+---- 
2016-09-15 09:53:42.511367+00 | 9 
2017-05-23 14:40:54.831525+00 | 14 
2017-06-05 07:47:39.78306+00 | 17 
2016-12-06 06:47:43.860581+00 | 19 
2016-09-09 07:34:58.40589+00 | 20 
2016-11-16 09:09:24.466439+00 | 24 
2016-09-09 12:08:27.503695+00 | 27 

?シンプルGROUP BYを使用していないのはなぜ

select distinct on (api_user.id) api_user.id,api_booking.install_ts 
from api_booking inner 
join api_user on api_booking.user_id=api_user.id 
and api_booking.status='completed' 
order by api_user.id,api_booking.install_ts 
limit 20 ; 
+1

'(api_user.id)api_user.id上の異なる選択は、内側api_bookingからapi_booking.install_tsはapi_booking.user_id = api_user.id上api_userに参加api_booking.status = '終了' 限界20、' ' 'スムース? @ VaoTsunありがとうございました –

+0

ありがとうございます。 – Luv33preet

答えて

2

これはトリックを行う必要がありますか?

select 
    min(api_booking.install_ts) as install_ts, 
    api_user.id 
from api_booking 
    inner join api_user on api_booking.user_id=api_user.id and api_booking.status='completed' 
group by api_user.id 
limit 20 ; 
+0

ordery by api_booking.install_ts、私を赦してください。しかし、デフォルトの注文は何ですか? desc/asc? – Luv33preet

+0

オーダーbyを使用しない場合でも、同じ結果が返されます。それを本当に使う必要はありますか? – Luv33preet

+0

asc - なぜですか?降順で注文しますか? –

0

関連する問題