sql'where exists'查找顺序

时间:2010-06-25 18:31:56

标签: sql

如何更改“where exists”的查找顺序

示例

SELECT name, dialcode
FROM np_prefixes
WHERE EXISTS ( SELECT d.name 
            FROM np_prefixes d
            GROUP BY d.name )
GROUP BY name

我要求以与当前相反的顺序获得它遇到的第一条记录 作为示例,返回的结果是21379(从高到低)但我需要21377(从低到高)

4 个答案:

答案 0 :(得分:1)

按DESC订购?我不确定我理解你的问题

答案 1 :(得分:1)

试试这个:

Select name, Min(dialcode)
From np_prefixes 
Where Exists( Select d.name  
              From np_prefixes d 
              Group By d.name ) 
Group By name 

实际上,您不需要Where Exists (正如你所写的那样,它无论如何都不会做任何事情):

Select name, Min(dialcode)
From np_prefixes 
Where name is not null 
Group By name 

答案 2 :(得分:1)

EXISTS条款中的顺序无关紧要。只要满足其中一个条件,EXISTS只返回true或false。

如果您希望以不同方式排序最终输出,则需要指定ORDER BY子句:

SELECT name, dialcode
  FROM np_prefixes
 WHERE EXISTS ( SELECT d.name 
                  FROM np_prefixes d
              GROUP BY d.name )
GROUP BY name
ORDER BY dialcode

答案 3 :(得分:1)

我认为您的查询与此相同:

SELECT name, dialcode
FROM np_prefixes
GROUP BY name

查看MAX()或MIN()以获取组中的最高或最低值,或者可能只是ORDER BY和limit子句。