有没有办法获得相同值的唯一行

时间:2019-04-18 08:07:47

标签: php mysql database

您好,很抱歉,如果这个问题的格式不正确,这是我的问题: 为简单起见,假设我有一张带有产品的桌子

-----------------------
| 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 个答案:

答案 0 :(得分:2)

一种实现此目的的方法是构建一个要查询的年龄的派生表,然后将其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

Demo on dbfiddle