2010-10-25 38 views
5

merak ediyordum birisi bu sorgu ile biraz bana yardım edebilir misiniz:Sütun mevcut değil mi?

SELECT u1.id,count(DISTINCT u2.userstatus) as TEMPCOLUMN FROM users AS u1 
JOIN friendssym ON u1.id = friendssym.user_id 
JOIN (SELECT * FROM users) as u2 ON friendssym.friend_id=u2.id 
WHERE TEMPCOLUMN=1 
group by u1.id; 
Ben sadece (yeniden adlandırıldı) sayımı bu sorgu ile bir hata alıyorum 1'e eşit olduğu sonucu sahip olmak istiyorum

:

ERROR: column "tempcolumn" does not exist 

Ama sütun doğru, olması gereken? Birisi yardımcı olabilir mi? Teşekkürler!

cevap

3

WHERE maddesindeki bir sütun takma ismine başvuramazsınız. Bir sütun diğer adı başvurabilir en erken geleneksel SQL

SELECT u1.id, 
     COUNT(DISTINCT u2.userstatus) as TEMPCOLUMN 
    FROM USERS AS u1 
    JOIN friendssym ON u1.id = friendssym.user_id 
    JOIN USERS as u2 ON friendssym.friend_id = u2.id  
GROUP BY u1.id 
    HAVING COUNT(DISTINCT u2.userstatus) = 1 

, ORDER BY deyimdir. Ancak MySQL ve SQL Server, HAVING ve GROUP BY maddelerinde erişim izni verir.

+0

Sütun takma adı kullanıyordum çünkü WHERE doğrudan COUNT kullanmamı izin vermiyordu (agrega kullanamadığını söylüyor) ancak HAVING mükemmel çalışıyor. Yardım için teşekkürler! – Joseph

+0

@Airjoe: Yep, bir alt sorgunun dışındaki WHERE deyiminde toplama işlevlerini (COUNT, SUM, MIN veya MAX) kullanamaz - bunun için HAVING yan tümcesini kullanmanız gerekir. –

İlgili konular