2

サブクエリを使用してさまざまなテーブルからリストを選択するための SQL クエリがあります。特定の列で値が最も低いものを見つけることを意図しています。

これは私が現在持っているクエリです。最低レートが 350 であることはわかっていますが、クエリでは使用できません。これを MIN(rate) に変更しようとしても失敗しました。

  SELECT DISTINCT name
  FROM table1 NATURAL JOIN table2
  WHERE table2.code = (SELECT Code FROM rates WHERE rate = '100')

そのサブクエリを変更して最小レートを見つけるにはどうすればよいですか?

4

3 に答える 3

2

これを行う最も一般的な方法は

select distinct name
from table1 natural join table2
where
    table2.code in
    (
        select t.Code
        from rates as t
        where t.rate in (select min(r.rate) from rates as r)
    )

ウィンドウ関数がある場合は、次の関数を使用できrank()ます。

...
where
    table2.code in
    (
        select t.Code
        from (
            select r.Code, rank() over(order by r.rate) as rn
            from rates as r
        ) as t
        where t.rn = 1
    )

SQL Server では、次のtop ... with ties構文を使用できます。

...
where
    table2.code in
    (
        select top 1 with ties r.Code
        from rates as r
        order by r.rate
    )
于 2013-09-11T10:14:18.070 に答える