2013-09-24 89 views
2

我正在寫一個mysql查詢,我有一個問題。我可以/我怎樣做這樣的事情:在mysql子查詢中使用外部別名

select rating, user_id, (
    -- in here I want to write a subquery to get the number of times the user_id in the outter query has rated this teacher 
) as user_rated_frequency from teachers_rating where teacher_id = id 

基本上我想獲得的數據,並在額定用戶是老師的頻率。是否可以使用我想要在select中選擇而不在where子句中的子查詢中選擇的項目中的別名?

+1

你可以給你的願望dresult樣品記錄? –

回答

7

退房this ...

SELECT rating, 
     user_id, 
     (SELECT COUNT(*) 
      FROM teachers_rating t1 
     WHERE teacher_id = 3 
      AND t1.user_id = t2.user_id) AS user_rated_frequency 
    FROM teachers_rating t2 
WHERE teacher_id = 3; 

that one:以上

SELECT AVG (rating) AS average_rating, 
     user_id, 
     (SELECT Count(*) 
      FROM teachers_rating t1 
     WHERE teacher_id = 3 
      AND t1.user_id = t2.user_id) AS user_rated_frequency 
    FROM teachers_rating t2 
WHERE teacher_id = 3 
GROUP BY user_rated_frequency; 

鏈接顯示SQL小提琴例子假設id3

另外,您可以有FROM子句中的子查詢:

SELECT AVG (t1.rating), 
     t1.user_id, 
     t2.user_rated_frequency 
    FROM teachers_rating t1, 
     (SELECT tr.teacher_id, 
       tr.user_id, 
       COUNT(*) AS user_rated_frequency 
      FROM teachers_rating tr 
     GROUP BY tr.teacher_id) t2 
WHERE t1.teacher_id = t2.teacher_id 
    AND t1.user_id = t2.user_id 
GROUP BY user_id, user_rated_frequency 

帽子一起來看看這款Fiddle

-1

您需要將子查詢(技術上稱爲派生表)放入from子句中。 東西像這樣:

select 
    rating, 
    user_id, 

    from teachers_rating, 
    (in here I want to write a subquery to get the number of times the user_id in the outter query has rated this teacher) as user_rated_frequency f 
where teacher_id = f.id 
+1

我不知道我可以在「from」之後做到這一點,我認爲你想選擇的項目必須在「from」之前。 – ackerchez

相關問題