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;います。つまり、すべての行が含まれます。等式が最初に評価され、次にブール値が評価されORます。

于 2012-06-14T15:31:49.883 に答える
0

の後のWHEREステートメントは、それ自体がブール ステートメントであると見なす必要があります。つまり、式は次のようになります。

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