目前,我有我的表中的一行:MySQL的Select語句,其中 'IN' 條款
course_data:
user_id days <-- This is a varchar column.
405 1,3,5
,我想實現下面的SELECT語句:
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
基本上,我如果$ day變量包括'1,3或5',則希望該行(用戶405)被省略。
例如,如果$day = "1"
,它應該返回一個空查詢(因爲數字「1」在列「1,3,5」)。
但是,我還沒有發現這種情況。即使$day = "1"
,它仍然返回該行。
它不會返回行的唯一方法是如果然而,我認爲IN()子句將採用我的變量的任何部分,並將其應用於該列。
任何有關我在做什麼錯誤的見解?謝謝。
謝謝。你對改變結構是正確的。我繼續這樣做。謝謝。 – Dodinas 2009-10-18 22:08:00
「所以這是最好的猜測」:另一個(希望可行的)想法是使用NOT EXISTS子查詢,如http://dev.mysql.com/doc/refman/5.1/en/exists-and-not- exists-subqueries.html而不是'x NOT IN(subquery)' – VolkerK 2009-10-19 08:30:08
%like%會給11搜索1,所以它不適合,所以這個答案並不適用於原始問題。 theomega的答案似乎更適用於OP。 – Tarquin 2017-09-10 23:53:38