0

我正在为我的模型获取一些行,但是视图有很多标准,我已经厌倦了编写许多模型。为了使工作更轻松,我不想为每个选择的标准编写新的选择语句,所以起初我尝试尝试即使用户提供/未提供多个可用条件之一,仍会从选择中返回某些内容。

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=1member_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并因此失败。

有人帮忙。

4

2 回答 2

2

你不能使用=with NULL。使用IS NULLIS NOT NULL

见:http ://dev.mysql.com/doc/refman/5.0/en/working-with-null.html

于 2013-07-31T12:40:13.037 回答
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。这就是你让它工作的原因。

于 2013-07-31T12:43:55.540 回答