SQL查询获取

时间:2011-04-28 11:53:44

标签: sql sql-server

以下是为特定NO检索的数据。

id    color    no
5939  Black     1
5959  Silver    1
7900  Blue      1
7593  Red       1

该表格为Black,因此我只需返回ID 5939。如果我的表没有Black的记录,那么我必须返回Silver ID 5959,蓝色和红色相同。

注意:我的SQL查询应该只有一个输入参数,即NO

3 个答案:

答案 0 :(得分:2)

SQL Server答案

SELECT TOP 1 id,color,no
FROM YourTable
WHERE no=@no
ORDER BY CASE Color 
             WHEN 'Black'  THEN 1 
             WHEN 'Silver' THEN 2 
             WHEN 'Blue'   THEN 3 
             WHEN 'Red'    THEN 4 
          END

或者更便携的答案

WITH T
     As (SELECT id,
                color,
                no,
                ROW_NUMBER() OVER ( ORDER BY CASE Color 
                                                  WHEN 'Black' THEN 1 
                                                  WHEN 'Silver' THEN 2
                                                  WHEN 'Blue' THEN 3 
                                                  WHEN 'Red' THEN 4 
                                              END) AS RN
         FROM   YourTable
         WHERE  no = @no)
SELECT id,
       color,
       no
FROM   T
WHERE  RN = 1 ;

答案 1 :(得分:0)

我建议像“select * from table where no =?limit 1”。关键字LIMIT取决于您的数据库,对于DB2,它将是“select * from table where no =?fetch first 1 rows”。

答案 2 :(得分:0)

这是一个选项,它将返回NO的第一个Id。

SELECT MIN(Id)
  FROM Table a
 WHERE No = ?