对于几列的所有可能组合,是否有更有效的查询表(或表集合)的方法,我目前正在运行group by然后max,但这似乎不是最有效的方式。
以下示例的SQL小提琴:http://sqlfiddle.com/#!2/25f8b/3
示例表
ID | Name | Age | City | Color
--------------------------------
1 | Dave | 10 | London | Red
2 | Dave | 11 | London | Purple
3 | Dave | 10 | Paris | Orange
4 | Jim | 10 | London | Red
5 | Jim | 10 | London | Green
6 | Jim | 11 | London | Lazer
etc... (around 500,000 rows)
目前正在做:
SELECT max(ID), Name, Age, City, Color
from People
group by Name, Age, City
生产:
MAX(ID) NAME AGE CITY COLOR
1 Dave 10 London Red
3 Dave 10 Paris Orange
2 Dave 11 London Purple
5 Jim 10 London Red
6 Jim 11 London Lazer
然而,目前在这个庞大的数据库上,返回结果需要大约十分钟(注意它实际上是几个表的连接)
是否有更有效的方法可以返回相同的结果?我想象的是SELECT * WHERE name = %, age = % and city = % LIMIT 1
或类似的
答案 0 :(得分:0)
要获得不同的组合,请使用保留字DISTINCT
:
SELECT DISTINCT Name, Age, City
FROM People
这给出了与结果相同的结果:
SELECT Name, Age, City
FROM People
GROUP BY Name, Age, City
但它有限: