Выбрать все, кроме - MySQL
Формулировка задачи:
пробую писать тест: вопрос-ответ. есть база вопросов. нужно брать рандомно один вопрос и показывать пользователю. он отвечает. записываю id этого вопроса и больше его не показываю. решил сделать это с помощью NOT IN. но почему то не выходит:
если писать так, то все нормально
пробую так:
убирается только запись с id=18. если первым поставить 20 то уберется только id=20
попробовал так:
результат тот же: не показывает тот id который стоит первый в списке
а если так, как советовали ранее на других сайтах:
то вообще не работает
как быть? пробовал другие варианты, но они на мой взгляд более сложные
$q = mysql_query(SELECT * FROM test WHERE theme='".theme."' AND id NOT IN (18,19,20) ORDER BY RAND() LIMIT 1);
$not = "18,19,20";
$q = mysql_query(SELECT * FROM test WHERE theme='".theme."' AND id NOT IN ('$not') ORDER BY RAND() LIMIT 1);$not = "18,19,20";
$q = mysql_query(SELECT * FROM test WHERE theme='".theme."' AND id NOT IN ('".$not."') ORDER BY RAND() LIMIT 1);$not = "18,19,20";
$q = mysql_query(SELECT * FROM test WHERE theme='".theme."' AND id NOT IN (".$not.") ORDER BY RAND() LIMIT 1);Решение задачи: «Выбрать все, кроме»
textual
Листинг программы
"SELECT * FROM `user` WHERE `email` = ? NOT IN ('pass')";
Объяснение кода листинга программы
В данном коде происходит выборка всех полей из таблицы user, за исключением поля email, которое не равно заданному значению и не содержится в списке NOT IN.
SELECT * FROM— оператор выборки всех полей из таблицы'user'— название таблицы, из которой производится выборкаWHERE— оператор условия для выборки'email'— название поля, которое не должно быть равно заданному значению= ?— оператор сравнения поля с заданным значением (значение указано после вопросительного знака)NOT IN ('pass')— оператор, указывающий, что поле не должно содержаться в списке значений, указанных в кавычках Таким образом, в результате выполнения данного запроса будет получена выборка всех полей из таблицыuser, за исключением поляemail, которое не равно заданному значению и не содержится в спискеNOT IN.