Оператор выбора SQL с WHERE, AND, OR - PullRequest
13 голосов
/ 27 августа 2010

Я хотел бы выполнить запрос 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";

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

Ответы [ 5 ]

31 голосов
/ 27 августа 2010

Согласно приоритет оператора для MySQL AND имеет более высокий приоритет, чем 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");
4 голосов
/ 27 августа 2010

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

SELECT name, sex, fur, color 
FROM dogs 
WHERE sex='male' AND fur='short' AND (color='black' OR size='big');
1 голос
/ 27 августа 2010

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

SELECT name, sex, fur, color 
    FROM dogs 
    WHERE sex="male" AND fur="short" AND (color="black" OR size="big");
0 голосов
/ 10 апреля 2019

выберите имя, пол, мех, окрас у собак, где пол = «мужской», а мех = «короткий» и (цвет = «черный» или размер = «большой»);

0 голосов
/ 20 декабря 2013

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

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