it-roy-ru.com

Оператор выбора SQL с WHERE, AND, OR

Я хотел бы выполнить SELECT запрос с MySQL. Моя цель состоит в том, чтобы выбрать всех собак в базе данных ветеринара, которые будут sex=male и fur=short и (color=black or size=big)

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

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

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

Прошу прощения за мою фразу, если это слишком запутанно.

13
dave

Согласно приоритет оператора для 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");
30
codaddict

Обязательно добавьте скобки, чтобы условие OR оценивалось правильно.

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

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

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

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

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