#mysql
#mysql
Вопрос:
У меня есть таблица с фруктами:
id fruit_type color
--------------------------
1 apple yellow
2 apple green
3 strawberry red
Я хочу выбрать все фрукты из моей таблицы. Но если это яблоко, я хочу включить его только в том случае, если оно зеленое.
Как я могу добиться этого в одном запросе MySQL?
Комментарии:
1. довольно интересный сценарий 🙂
Ответ №1:
Ничего сложного, вам просто нужно использовать OR
оператор в вашем WHERE
состоянии:
SELECT *
FROM fruits
WHERE fruit_type != "apple"
OR color = "green"; /* ie where fruit_type = "apple" and color = "green" */
.
Комментарии:
1. Я, по-видимому, dv. Не могу вспомнить, почему :-
Ответ №2:
Я думаю, вы могли бы использовать объединение.
Select * from fruits where fruit_type<> 'apple'
Union
Select * from fruits where fruit_type= 'apple' and color = 'green'
Комментарии:
1. В больших масштабах это довольно неэффективно. Есть такие операторы,
OR
которые можно использовать для этого.2. Я согласен, но это не упоминается в вопросе, рассматривает ли он производительность. Я просто хотел показать альтернативу
3. Это то, что я думаю: сначала выбираются все фрукты, которые не являются яблоками, а затем этот результат объединяется со всеми зелеными яблоками?
4. @BenediktB да, вы хорошо понимаете
Ответ №3:
здесь я создаю запрос для sql server
. таким же образом вы можете создать в mysql
Select id, fruit_type,color from
(
Select
Case when fruit_type = 'apple' and color <> 'Green'
then 'N' Else 'Y' end as selected,
*
from fruits )temptable
where temptable.selected = 'Y'