1

私はこれについて多くのことを考えてきましたが、答えは見つかりませんでした。私は、SQL クエリの where 句の条件がどのように評価されるかを知らなかった状況で自分自身を見つけました。確かに、私は常に括弧を使用して、読みやすく、理解しやすいようにしています。必要でない場合でも、可読性を高めるために括弧を使用することをお勧めします。

次のクエリを検討してください

SELECT * 
FROM mytable 
WHERE name='Anton' 
  AND lastname='Gildebrand' 
   OR age > 18 
  AND country='Sweden'

このクエリは実際には等しいと思います

SELECT * 
FROM mytable 
WHERE name='Anton' 
 AND (lastname='Gildebrand' OR (age > 18 AND country='Sweden'))

これは正しいです?または、条件はどのように評価されますか? 異なるデータベース エンジンとの違いはありますか?

4

2 に答える 2

8
SELECT * FROM mytable
WHERE name='Anton' AND lastname='Gildebrand' OR age > 18 AND country='Sweden'

等しい:

SELECT * FROM mytable
WHERE (name='Anton' AND lastname='Gildebrand') OR (age > 18 AND country='Sweden')

ソース:TSQLMySQLOraclePostgreSQL

于 2013-03-01T21:30:58.740 に答える
3

andとについて話している場合orは、括弧andがない場合に最初に評価されます。数学*と同じです。+

これらのルールはSQLの実装に依存していません。

于 2013-03-01T21:32:02.793 に答える