您好,很抱歉,如果这个问题的格式不正确,这是我的问题: 为简单起见,假设我有一张带有产品的桌子
-----------------------
| 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)
它可以返回两行,但是当年龄在逻辑上相同时,它返回一行,这是我的问题,如何使它再次返回我想要的所有行,或者如果我的逻辑有其他问题,谢谢前进
答案 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