4

我有一个名为 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 语法哪里出错了?

4

2 回答 2

7

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

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

于 2012-06-14T15:31:49.883 回答
0

您应该单独查看WHERE作为布尔语句之后的语句。我的意思是,你的表达应该是这样的:

SELECT * FROM `Participant` WHERE idParticipant = 118 OR idParticipant = 119;
于 2019-12-13T20:51:47.147 回答