【问题标题】:Why does column_name = (select column_name) work and not column_name=null为什么 column_name = (select column_name) 工作而不是 column_name=null
【发布时间】:2013-07-31 20:43:55
【问题描述】:

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

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 中,我认为我会在member_club_id 中得到unknown column 错误,因此失败。

有人帮忙。

【问题讨论】:

  • 应该是IS NULL 而不是= NULL

标签: mysql


【解决方案1】:

您不能将=NULL 一起使用。使用IS NULLIS NOT NULL

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

【讨论】:

    【解决方案2】:

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

     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。这就是你让它工作的原因。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多