Есть ли способ получить уникальные строки для того же значения - PullRequest
1 голос
/ 18 апреля 2019

Здравствуйте и извините, если этот вопрос не отформатирован, вот моя проблема: для простоты, скажем, у меня есть таблица с продуктами

-----------------------
| id|  age |price|name| 
----------------------|
| 0 | 0   |  50  | x  |
| 1 | 1   |  51  | x  |
| 2 | 2   |  52  | x  |
| 3 | 3   |  53  | x  |
| 4 | 4   |  54  | x  |
| 5 | 5   |  55  | x  |
| 6 | 6   |  56  | x  |
| 7 | 7   |  57  | x  |
| 8 | 8   |  58  | x  |
-----------------------

Я хочу получить цену для всех продуктов возраста 0и 1 с

select price from products where name='x' and(age=0 or age=1) 

, и он работает, возвращая две строки, но когда логически совпадает возраст, он возвращает одну строку, и это моя проблема, как заставить его возвращать все строки, которые я хочу, или если что-то другоенеправильно с моей логикой, заранее спасибо

1 Ответ

2 голосов
/ 18 апреля 2019

Одним из способов достижения этого является построение производной таблицы возрастов, к которой вы хотите выполнить запрос, а затем JOIN в таблицу products.Обратите внимание, что вам нужно использовать UNION ALL в производной таблице для поддержки дубликатов.Чтобы найти дополнительные значения, добавьте еще UNION ALL SELECT n в производную таблицу для каждого значения:

SELECT p.price
FROM (SELECT 0 AS age
      UNION ALL
      SELECT 0) ages
JOIN products p ON p.age = ages.age
WHERE p.name = 'x'

Вывод:

price
50
50

Демонстрация на dbfiddle

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...