3

次のようなテーブルがあります。

id     price    condition     username
----------------------------------------
 1       20     New           Kim 
 2       30     Used          Kim
 3       40     Used          George
 4       60     New           Tom

サブセレクションについて質問です。このクエリを使用すると、

SELECT *
FROM `table`
WHERE `username` = 'kim'
  AND `price` = '20'
   OR `condition` = 'New' 

最後の条件で true になり、条件 = 'New' である 2 つのレコードがもたらされます。

ただし、AND を使用すると、正しいレコードが返されます。

SELECT *
FROM `table`
WHERE `username` = 'kim'
  AND `price` = '20'
  AND `condition` = 'New'

ユーザー名である最初のクエリの結果からのみ価格と条件を選択できるように、クエリをネストしたいと思います。ありがとう

4

2 に答える 2

3
SELECT * FROM table WHERE username = 'kim' AND (price = '20' OR condition = 'New');
于 2012-04-11T15:28:09.640 に答える
2

Rafal Wojcik が言ったように、グループ化する OR をデータベースに伝えるには、括弧を使用する必要があります。

ガイドなしで、エンジンはすべての条件文をグループ化します。

username = 'kim' AND price = 20 OR condition = 'New' 

として読む

((username = 'kim' AND price = 20) OR condition = 'New')

ご覧のとおり、これはあなたが望んでいたものではありません。ここで OR は "ki-20" OR "New" に適用されます

ANDすべてのケースで同じ問題が見られます。

幸運を!

于 2012-04-11T15:32:47.200 に答える