0
我想選擇給定字段中具有最小值的子查詢的所有行。下面是到目前爲止,我已經試過了技術的一些玩具例子:MySQL選擇具有最小值的所有子查詢行
-- 1.
select
id, min(foo)
from
(select 1 AS id, 2 AS foo
union select 2 AS id, 2 AS foo
union select 3 AS id, 3 AS foo) a;
-- 2.
select
min(foo)
from
(
select 1 AS id, 2 AS foo, 0 AS const
union select 2 AS id, 2 AS foo, 0 AS const
union select 3 AS id, 3 AS foo, 0 AS const) a
group by const;
-- 3.
select
id
from
(select 1 AS id, 2 AS foo
union select 2 AS id, 2 AS foo
union select 3 AS id, 3 AS foo) a
where id = (select id from a where min(foo) = foo);
-- 4.
select
id
from
(select 1 AS id, 2 AS foo
union select 2 AS id, 2 AS foo
union select 3 AS id, 3 AS foo) a
where foo = (select min(foo));
-- 5.
select r.*
from
(
select min(foo) t
from
(select 1 AS id, 2 AS foo
union select 2 AS id, 2 AS foo
union select 3 AS id, 3 AS foo) a
) m
INNER JOIN a ON m.t = r.foo;
我工作的實際查詢是類似的例子,因爲它是由幾個較小的查詢聯合在一起。此處的總體目標是基於與其相連的關聯表k的字段在中央表中查找一行,其中k是最高優先級表。結果是來自類似(但不同的表)的行的一種樹形視圖。
我已經提到過這個,所以如果有人能看到我以迂迴的方式討論這個問題,他們可以在更大的圖景上闡明一些事情。但現在我的角度是通過在子查詢中的字段取最小值來選擇。
「你需要包括表定義兩次」 - 這就是我所擔心的。我的子查詢是一個野獸。 –
@JeffCarpenter。 。 。第一種方法沒有這個限制。如果你需要重複,那麼視圖是另一種可能性。 –