ho attualmente la seguente riga nel mio tavolo:MySQL istruzione Select, DOVE E 'IN' clausola
course_data:
user_id days <-- This is a varchar column.
405 1,3,5
e sto cercando di implementare la seguente istruzione 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
Fondamentalmente, io desidera che la riga (con utente 405) venga omessa se la variabile $ day include un '1, 3 o 5'.
Ad esempio, se $day = "1"
, deve restituire una query vuota (poiché il numero "1" si trova nella colonna "1,3,5").
Tuttavia, non ho trovato questo il caso. Anche se $day = "1"
, restituisce ancora quella riga.
L'unico modo per non restituire la riga è se $day= "1,3,5."
Eppure, ho pensato che la clausola IN() avrebbe preso qualsiasi parte della mia variabile e la avrebbe applicata a quella colonna.
Qualche idea su cosa sto facendo male qui? Grazie.
Grazie. Hai ragione a cambiare la struttura. Sono andato avanti e l'ho fatto. Grazie. – Dodinas
"quindi questa è la migliore ipotesi": un'altra idea (sperabilmente fattibile) è quella di usare una subquery NON ESISTA come descritto su http://dev.mysql.com/doc/refman/5.1/en/exists-and-not- exists-subqueries.html invece di 'x NOT IN (sottoquery)' – VolkerK
% like% darebbe 11 per una ricerca di 1, quindi non è adatto, quindi questa risposta non si applica alla domanda originale. La risposta di theomega sembra più applicabile all'OP. – Tarquin