GROUP BY 多列和 LIMIT 2?
GROUP BY with multiple colums and LIMIT 2?
我的 mysql 数据库中有以下数据结构:
+-------+----------+-------+------------+-------------+-------------+
| Color | brand | size | otherstuff | otherstuff2 | otherstuff3 |
+-------+----------+-------+------------+-------------+-------------+
| red | BMW | small | 0,69 | 0,22 | 0,36 |
| red | BMW | big | 0,48 | 0,00 | 0,13 |
| red | Ford | small | 0,42 | 0,33 | 0,81 |
| red | BMW | big | 0,99 | 0,66 | 0,27 |
| red | Ford | big | 0,30 | 0,44 | 0,23 |
| red | Mercedes | small | 0,87 | 0,23 | 0,80 |
| red | Mercedes | big | 0,51 | 0,06 | 0,46 |
| blue | BMW | small | 0,07 | 0,53 | 0,99 |
| blue | BMW | small | 0,57 | 0,45 | 0,45 |
| blue | BMW | big | 0,14 | 0,23 | 0,37 |
| blue | Ford | big | 0,83 | 0,14 | 0,20 |
| blue | Ford | big | 0,20 | 0,10 | 0,60 |
| blue | Mercedes | small | 0,58 | 0,90 | 0,90 |
| blue | BMW | small | 0,12 | 0,41 | 0,40 |
| blue | Mercedes | big | 0,81 | 0,57 | 0,79 |
| blue | Mercedes | big | 0,95 | 0,36 | 0,70 |
| green | Ford | big | 0,09 | 0,56 | 0,90 |
| green | Ford | small | 0,54 | 0,03 | 0,99 |
| green | Ford | small | 0,86 | 0,58 | 0,12 |
| green | BMW | small | 0,88 | 0,39 | 0,91 |
| green | BMW | small | 0,39 | 0,92 | 0,50 |
| green | BMW | big | 0,11 | 0,62 | 0,23 |
+-------+----------+-------+------------+-------------+-------------+
我想收到每种颜色和每种品牌的一个大尺寸和一个小尺寸行 - 像这样:
+-------+----------+-------+------------+-------------+-------------+
| Color | brand | size | otherstuff | otherstuff2 | otherstuff3 |
+-------+----------+-------+------------+-------------+-------------+
| red | BMW | small | 0,69 | 0,22 | 0,36 |
| red | BMW | big | 0,48 | 0,00 | 0,13 |
| red | Ford | small | 0,42 | 0,33 | 0,81 |
| red | Ford | big | 0,30 | 0,44 | 0,23 |
| red | Mercedes | small | 0,87 | 0,23 | 0,80 |
| red | Mercedes | big | 0,51 | 0,06 | 0,46 |
| blue | BMW | small | 0,57 | 0,45 | 0,45 |
| blue | BMW | big | 0,14 | 0,23 | 0,37 |
| blue | Ford | big | 0,20 | 0,10 | 0,60 |
| blue | Mercedes | big | 0,81 | 0,57 | 0,79 |
| blue | Mercedes | small | 0,58 | 0,90 | 0,90 |
| green | Ford | big | 0,09 | 0,56 | 0,90 |
| green | Ford | small | 0,54 | 0,03 | 0,99 |
| green | BMW | small | 0,39 | 0,92 | 0,50 |
| green | BMW | big | 0,11 | 0,62 | 0,23 |
+-------+----------+-------+------------+-------------+-------------+
我的SQL:
SELECT * FROM `table` GROUP BY color
我的 SQL 收到一个小品牌和一个大品牌的颜色有什么不同?
感谢@Nick 和所有其他人。
这对我有用:
SELECT color, brand, size, otherstuff1, otherstuff2, otherstuff3 FROM [table] GROUP BY color, brand, size ORDER BY color, brand, size
谢谢
要根据颜色、品牌和尺码任意选择一行,请使用 ROW_NUMBER
:
SELECT color, brand, size, otherstuff, otherstuff2, otherstuff3
FROM
(
SELECT
t.*,
ROW_NUMBER() OVER (PARTITION BY color, brand, size ORDER BY otherstuff) AS rn
FROM mytable t
) numbered
WHERE rn = 1
ORDER BY color, brand, size;
我的 mysql 数据库中有以下数据结构:
+-------+----------+-------+------------+-------------+-------------+
| Color | brand | size | otherstuff | otherstuff2 | otherstuff3 |
+-------+----------+-------+------------+-------------+-------------+
| red | BMW | small | 0,69 | 0,22 | 0,36 |
| red | BMW | big | 0,48 | 0,00 | 0,13 |
| red | Ford | small | 0,42 | 0,33 | 0,81 |
| red | BMW | big | 0,99 | 0,66 | 0,27 |
| red | Ford | big | 0,30 | 0,44 | 0,23 |
| red | Mercedes | small | 0,87 | 0,23 | 0,80 |
| red | Mercedes | big | 0,51 | 0,06 | 0,46 |
| blue | BMW | small | 0,07 | 0,53 | 0,99 |
| blue | BMW | small | 0,57 | 0,45 | 0,45 |
| blue | BMW | big | 0,14 | 0,23 | 0,37 |
| blue | Ford | big | 0,83 | 0,14 | 0,20 |
| blue | Ford | big | 0,20 | 0,10 | 0,60 |
| blue | Mercedes | small | 0,58 | 0,90 | 0,90 |
| blue | BMW | small | 0,12 | 0,41 | 0,40 |
| blue | Mercedes | big | 0,81 | 0,57 | 0,79 |
| blue | Mercedes | big | 0,95 | 0,36 | 0,70 |
| green | Ford | big | 0,09 | 0,56 | 0,90 |
| green | Ford | small | 0,54 | 0,03 | 0,99 |
| green | Ford | small | 0,86 | 0,58 | 0,12 |
| green | BMW | small | 0,88 | 0,39 | 0,91 |
| green | BMW | small | 0,39 | 0,92 | 0,50 |
| green | BMW | big | 0,11 | 0,62 | 0,23 |
+-------+----------+-------+------------+-------------+-------------+
我想收到每种颜色和每种品牌的一个大尺寸和一个小尺寸行 - 像这样:
+-------+----------+-------+------------+-------------+-------------+
| Color | brand | size | otherstuff | otherstuff2 | otherstuff3 |
+-------+----------+-------+------------+-------------+-------------+
| red | BMW | small | 0,69 | 0,22 | 0,36 |
| red | BMW | big | 0,48 | 0,00 | 0,13 |
| red | Ford | small | 0,42 | 0,33 | 0,81 |
| red | Ford | big | 0,30 | 0,44 | 0,23 |
| red | Mercedes | small | 0,87 | 0,23 | 0,80 |
| red | Mercedes | big | 0,51 | 0,06 | 0,46 |
| blue | BMW | small | 0,57 | 0,45 | 0,45 |
| blue | BMW | big | 0,14 | 0,23 | 0,37 |
| blue | Ford | big | 0,20 | 0,10 | 0,60 |
| blue | Mercedes | big | 0,81 | 0,57 | 0,79 |
| blue | Mercedes | small | 0,58 | 0,90 | 0,90 |
| green | Ford | big | 0,09 | 0,56 | 0,90 |
| green | Ford | small | 0,54 | 0,03 | 0,99 |
| green | BMW | small | 0,39 | 0,92 | 0,50 |
| green | BMW | big | 0,11 | 0,62 | 0,23 |
+-------+----------+-------+------------+-------------+-------------+
我的SQL:
SELECT * FROM `table` GROUP BY color
我的 SQL 收到一个小品牌和一个大品牌的颜色有什么不同?
感谢@Nick 和所有其他人。 这对我有用:
SELECT color, brand, size, otherstuff1, otherstuff2, otherstuff3 FROM [table] GROUP BY color, brand, size ORDER BY color, brand, size
谢谢
要根据颜色、品牌和尺码任意选择一行,请使用 ROW_NUMBER
:
SELECT color, brand, size, otherstuff, otherstuff2, otherstuff3
FROM
(
SELECT
t.*,
ROW_NUMBER() OVER (PARTITION BY color, brand, size ORDER BY otherstuff) AS rn
FROM mytable t
) numbered
WHERE rn = 1
ORDER BY color, brand, size;