我正在为我的模型获取一些行,但是视图有太多标准,我已经厌倦了编写许多模型。为了简化工作,我不想为每个选择的标准编写新的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=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错误,因此失败。

有人帮忙。

最佳答案

在第一个查询中,您可能想要这样做

 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。这就是为什么您要使其工作。

10-06 13:46
查看更多