Tôi hiện đang có hàng sau trong bảng của tôi:MySQL Chọn Statement, WHERE 'TRÊN' khoản
course_data:
user_id days <-- This is a varchar column.
405 1,3,5
và tôi đang cố gắng để thực hiện các câu lệnh SELECT như sau:
SELECT usrID, usrFirst, usrLast, usrEmail
FROM tblUsers
WHERE usrID NOT IN
(
SELECT users.usrID
FROM
`course_data` courses,
`tblUsers` users
WHERE
days IN ('$day')
)
GROUP BY usrID
ORDER BY usrID
Về cơ bản, tôi muốn bỏ qua hàng đó (với người dùng 405) nếu biến $ day bao gồm '1, 3 hoặc 5'.
Ví dụ: nếu $day = "1"
, nó sẽ trả về truy vấn trống (vì số "1" nằm trong cột "1,3,5").
Tuy nhiên, tôi không thấy điều này xảy ra. Mặc dù $day = "1"
, nó vẫn trả về hàng đó.
Cách duy nhất để nó không trả về hàng là $day= "1,3,5."
Tuy nhiên, tôi nghĩ rằng mệnh đề IN() sẽ lấy bất kỳ phần nào của biến của tôi và áp dụng nó vào cột đó.
Mọi thông tin chi tiết về những gì tôi đang làm sai ở đây? Cảm ơn.
Cảm ơn. Bạn đúng về việc thay đổi cấu trúc. Tôi đã đi trước và làm như vậy. Cảm ơn bạn. – Dodinas
"vì vậy đây là một dự đoán tốt nhất": một ý tưởng khác (hy vọng khả thi) là sử dụng truy vấn con không tồn tại như được mô tả tại http://dev.mysql.com/doc/refman/5.1/en/exists-and-not- exist-subqueries.html thay vì 'x NOT IN (truy vấn phụ)' – VolkerK
% như% sẽ cung cấp 11 cho tìm kiếm 1, vì vậy nó không thực sự phù hợp, vì vậy câu trả lời này không thực sự áp dụng cho câu hỏi gốc. Câu trả lời từ theomega dường như áp dụng nhiều hơn cho OP. – Tarquin