2013-07-31 3 views
0

Я извлекаю несколько строк для своей модели, но в представлении так много критериев, я устал писать много моделей. Чтобы облегчить работу, я не хочу для записи новых операторов выбора для каждого выбранного критерия, поэтому сначала я попытался попробовать и все еще вернуть что-то из выбора, даже когда один из других доступных критериев не предоставляется/не предоставляется пользователем.Почему column_name = (select column_name) работает, а не column_name = null

SELECT * FROM members WHERE member_id = null AND member_club_id = 1 AND membership_year = null; 

и ничего не возвращает

Наконец я попытался

SELECT * FROM members WHERE member_id = (select member_id) AND member_club_id = (select member_club_id=1) AND membership_year = (select membership_year); 

и это работает правильно.

Я все еще новичок в mysql, и я хотел знать, почему этот второй подход работал.

Интересует, например, select member_club_id=1 и member_id = (select member_id).

В member_id = (select member_id) Я думал, что это будет считаться member_id=member_id, так как у меня не было переменной, называемой member id, и поэтому не удалось.

В select member_club_id=1 Я думал, что получил бы unknown column ошибки в member_club_id и, следовательно, не смог.

Кто-то помогает.

+3

Это должно быть 'IS NULL' вместо' = NULL' –

ответ

1

в первом запросе вы, возможно, хотите сделать это

SELECT * FROM members WHERE member_id is null 
         AND member_club_id = 1 
         AND membership_year is null; 
  • нет в MySQL = null но is null

в вашем втором запросе я не думаю, что это member_id = (select member_id) что-то сделает

его, как вы говорите, WHERE member_id = member_id это автоматически возвращает true во всех случаях. Вот почему вы его работали.

Смежные вопросы