我有一个名为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语法哪里出问题了?
您需要使用WHERE idParticipant IN (118, 119);
[我的猜测是,MySQL正在将119的值隐式转换为布尔型的真值,所以您说的是:WHERE idParticipant = 118 OR TRUE;
,因此包括所有行。首先计算相等性,然后是布尔值OR
。
您应该单独将WHERE
之后的语句视为布尔语句。我的意思是,您的表情应如下所示:
SELECT * FROM `Participant` WHERE idParticipant = 118 OR idParticipant = 119;