2014-12-04 113 views
0

我需要一個mysql查詢,它將選擇「name」或「quantity」列中包含「joe」的所有行。它需要之間的「名」與「量」的欄目,這意味着我們將得到數量與每名corressponding如下面的圖像的最大值不同: enter image description here用SQL中的distinct和max查詢

決賽桌也應由排序id降序。 請告訴我知道用mysql查詢的方式。 感謝

+0

可能下一個字符串出現在整數列什麼情況? – Strawberry 2014-12-04 08:26:31

回答

0

最簡單的方法是使用not exists

select * from table_name t1 
where 
not exists (
select 1 from table_name t2 where t1.name= t2.name and t1.quantity < t2.quantity 
); 

另一個變化是使用left join

select t1.* from table_name t1 
left join table_name t2 on t2.name = t1.name 
and t1.quantity < t2.quantity 
where t2.id is null; 
+0

而最快的方式是...(選項3) – Strawberry 2014-12-04 08:28:12

+0

那麼左邊的連接性能好於存在索引列時的情況。優化器可以針對一小部分數據進行優化,而當表格相對較小且編制索引時,它們之間沒有區別。如果你知道更快的方式,爲什麼不把它作爲答案而不是評論? – 2014-12-04 08:38:28

+0

因爲在手機上打字很乏味,所以我想你可能知道我所指的方法。畢竟它已經在手冊中涵蓋了。 – Strawberry 2014-12-04 08:46:44