目前,我有我的表中的一行: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