我有一个名为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语法在哪里出错?
答案 0 :(得分:5)
您需要使用WHERE idParticipant IN (118, 119);
我的猜测是MySQL隐式地将119的值转换为布尔值true,因此您说:WHERE idParticipant = 118 OR TRUE;
,因此包括所有行。首先评估相等性,然后是布尔OR
。
答案 1 :(得分:0)
您应该将WHERE
之后的语句本身视为布尔型语句。我的意思是,您的表情应如下所示:
SELECT * FROM `Participant` WHERE idParticipant = 118 OR idParticipant = 119;