以下是为特定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
答案 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 = ?