2012-02-23 5 views
0

最初の選択はmysqlは2つを選択しますか?

select user_id, count(*) as count 
from users 
where referrer IS NOT NULL 
group by referrer 
order by count DESC 

は、その後、私は上記のクエリでユーザーを参照し、ユーザーの日付を取得する必要があり、そのクエリによって返されるレコードをオフに基づいています。

select user_id from users where token = IDS_FROM_LAST_QUERY 

私は、サブクエリを使用し、どこIN(副問合せ)言うことができる知っているが、私は、サブクエリからのカウントを維持しようとまでトリップしそうです。

だから、最後に、私はCTE(共通テーブル式)を使用し、以下の情報

user_id, count 

答えて

1
select o.user_id user_id, count(*) count 
from users o 
join users i on o.token = i.user_id 
where i.referrer is not null 
group by referrer 
order by count desc 
+0

私はo.token = i.referrerとして結合を変更しました。 – hcker2000

0

を必要としています。 CTEは、1つの母集団を取得し、CTEから同じまたはわずかに異なる母集団を照会するために非常に便利です。

WITH Referrer (user_id, count) AS 
(
select user_id, count(*) as count 
from users 
where referrer IS NOT NULL 
group by referrer 
order by count DESC 
) 

select 

users.user_id 
,Referrer.count 

from users 

inner join Referrer.user_id = users.user_id 
関連する問題