2010-08-27 3 views
10

Я хотел бы выполнить запрос SELECT с MySQL. Моя цель состоит в том, чтобы выбрать всех собак в базе данных ветеринара, которые были бы сексом = мужчина и мех = короткие и (цвет = черный или размер = большой)SQL Select Statement с WHERE, AND, ИЛИ

Примечание: я хочу выбрать собак, которые являются либо черными, либо размерами большой. Они не должны выполнять 2 требования. Им просто нужно выполнить одно из них.

Я написал заявление SQL ниже, но я не не уверен, если я прав:

SELECT name, sex, fur, color FROM dogs WHERE TRUE sex='male' AND fur='short' AND color='black' OR size="big"; 

Пардон мой фразировка, если это слишком запутанным.

ответ

23

В соответствии с Operator precedence for MySQLAND имеет более высокий приоритет, чем OR.

Так C1 AND C2 OR C3 будет рассматриваться как (C1 AND C2) OR C3

Чтобы изменить приоритет по умолчанию вы должны использовать круглые скобки как: C1 AND (C2 OR C3)

В вашем случае право запроса:

SELECT name, sex, fur, color 
FROM dogs 
WHERE sex='male' AND fur='short' AND (color='black' OR size="big"); 
+0

Thnaks codaddict. Должно ли быть «AND» между «WHERE TRUE» и «sex = 'name»? – dave

+0

Вы правы, вы можете иметь «ИСТИННЫЙ И С1 ...» или просто «C1 ....» – codaddict

1

Способ использования круглых скобок в описании вашей цели является правильным. Синтаксис:

SELECT name, sex, fur, color 
    FROM dogs 
    WHERE sex="male" AND fur="short" AND (color="black" OR size="big"); 
+0

Cheers cherouvim. Хороший. – dave

3

Убедитесь для добавления скобок, поэтому условие OR оценивается правильно.

SELECT name, sex, fur, color 
FROM dogs 
WHERE sex='male' AND fur='short' AND (color='black' OR size='big'); 
+0

Cheers Lance. Хороший. – dave

0

Я использовал это и его работу;

SELECT name, sex, fur, color 
FROM dogs 
WHERE sex="male" AND fur="short" AND (color="black" || size="big");