我正在为我的模型获取一些行,但是视图有太多标准,我已经厌倦了编写许多模型。为了简化工作,我不想为每个选择的标准编写新的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
错误,因此失败。有人帮忙。
最佳答案
在第一个查询中,您可能想要这样做
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。这就是为什么您要使其工作。