我有一個SQL查詢,根據條件以不同方式連接表。如何在MySQL連接查詢中使用IF語句?
SELECT m.id, u.first_name AS otherUser
FROM matches AS m
IF (u.id=m.user2ID)
LEFT JOIN users AS u ON u.id = m.user1ID
ELSE
LEFT JOIN users AS u ON u.id = m.user2ID
ENDIF
WHERE m.user1ID=2 OR m.user2ID=2
matches
是一個整數列爲user1ID和user2ID的表。 users
是包含我的Web應用程序用戶的表格。 users
有一個名爲first_name
的VARCHAR字段。
此查詢的目的是獲取與當前用戶匹配的用戶的名稱。
然而,MySQL的返回此錯誤:
#1064 - You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version for
the right syntax to use near 'IF (u.id=m.user2ID) LEFT JOIN users
AS u ON u.id = m.user1ID ELSE LEFT JOIN user' at line 3
爲什麼?
謝謝,這個查詢生成的結果數量正確,但奇怪地返回NULL在otherUser列中的所有值。它似乎沒有檢測到用戶的名字,如下所示http://goo.gl/jg7xp – 2012-04-08 17:40:11