简体   繁体   中英

Is there a way to get unique rows for same value

Hello and sorry if this questions isn't good formatted, here's my problem: for simplicity let's say i have a table with products

-----------------------
| 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  |
-----------------------

I want to get the price for all products of age 0 and 1 with

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

and it works returning two rows but when the age is the same logically it returns one row and that's my problem how to get it to return again all the rows i want or if something other is wrong with my logic, thank you in advance

One way to achieve this is to build a derived table of the ages that you want to query against and then JOIN that to the products table. Note that you need to use UNION ALL in the derived table to maintain duplicates. Additional values can be searched by adding another UNION ALL SELECT n to the derived table for each value:

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'

Output:

price
50
50

Demo on dbfiddle

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM