Tôi có một truy vấn SQL để lại tham gia một bảng theo nhiều cách khác nhau tùy theo điều kiện.Làm cách nào để sử dụng câu lệnh IF trong truy vấn tham gia MySQL?
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
là bảng có cột số nguyên user1ID và user2ID. users
là một bảng chứa người dùng ứng dụng web của tôi. users
có trường VARCHAR được gọi là first_name
.
Mục đích của truy vấn này là lấy tên của người dùng phù hợp với người dùng hiện tại.
Tuy nhiên, MySQL trả về lỗi này:
#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
Tại sao?
Cảm ơn, truy vấn này tạo ra số lượng kết quả phù hợp, nhưng trả về NULL một cách kỳ lạ cho tất cả các giá trị trong cột otherUser. Dường như không phát hiện tên đầu tiên của người dùng, như được hiển thị ở đây http://goo.gl/jg7xp –