【问题标题】:MySQL SELECT WHERE EQUALS syntaxMySQL SELECT WHERE EQUALS 语法
【发布时间】:2012-06-14 15:29:56
【问题描述】:

我有一个名为 Participant 的 MySQL 数据库表,看起来像这样:

(idParticipant) - (firstName) - (secondName) - (gender) - (dob)

118   John     Dunne         m    1944-04-01

117   Mary     Delaney       f    1955-05-03

116   Adam     Bermingham    m    1920-01-01

115   Eamonn   Reilly        m    1987-03-19

114   Aaron    Duane         m    1990-07-08

119   Sarah    Calvin        f    1977-07-17

当我使用这个查询时:

SELECT * FROM `Participant` WHERE idParticipant = 118 OR 119;

我想我应该得到以下结果:

118  John    Dunne       m    1944-04-01

119  Sarah   Calvin      f    1977-07-17

但它只是返回整个表。我的 MySQL 语法哪里出错了?

【问题讨论】:

  • 你为什么要否决这个问题?这是一个完全有效的问题。

标签: mysql syntax


【解决方案1】:

你需要使用WHERE idParticipant IN (118, 119);

我的猜测是 MySQL 隐式地将 119 的值转换为布尔真值,所以你说:WHERE idParticipant = 118 OR TRUE;,因此包括所有行。首先评估相等性,然后是布尔值OR

【讨论】:

  • 啊,是的,当然……我的脑子现在都快炸了。应该看到的。谢谢。
【解决方案2】:

您应该将WHERE 之后的语句单独视为布尔语句。我的意思是,你的表情应该是这样的:

SELECT * FROM `Participant` WHERE idParticipant = 118 OR idParticipant = 119;

【讨论】:

    猜你喜欢
    • 2016-12-29
    • 2012-10-11
    • 2010-12-07
    • 2011-02-07
    • 2013-01-03
    • 2011-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多