我正在为我的模型获取一些行,但是视图有很多标准我厌倦了编写许多模型。为了使工作更容易,我不想为所选的每个条件编写新的select语句,所以最初我试过即使用户未提供一个或多个可用标准,尝试仍然从选择中返回一些内容。
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
错误,因此会失败。
有人帮忙。
答案 0 :(得分:2)
您无法将=
与NULL
一起使用。使用IS NULL
或IS NOT NULL
。
请参阅:http://dev.mysql.com/doc/refman/5.0/en/working-with-null.html
答案 1 :(得分:1)
在第一个查询中你可能想要这样做
SELECT * FROM members WHERE member_id is null
AND member_club_id = 1
AND membership_year is null;
= null
中没有is null
在你的第二个查询中我不认为member_id = (select member_id)
会做某事
就像你说WHERE member_id = member_id
这在所有情况下都会自动返回true。这就是为什么你让它工作。