以下是为特定NO
检索的数据。SQL查询获取
id color no
5939 Black 1
5959 Silver 1
7900 Blue 1
7593 Red 1
表有Black
所以我必须只返回ID 5939
。如果我的桌子没有Black
的记录,那么我必须返回银色ID 5959,蓝色和红色也一样。
注:我应该只有一个输入参数我的SQL查询,这是NO
以下是为特定NO
检索的数据。SQL查询获取
id color no
5939 Black 1
5959 Silver 1
7900 Blue 1
7593 Red 1
表有Black
所以我必须只返回ID 5939
。如果我的桌子没有Black
的记录,那么我必须返回银色ID 5959,蓝色和红色也一样。
注:我应该只有一个输入参数我的SQL查询,这是NO
一个SQL Server的答案
SELECT TOP 1 id,color,no
FROM YourTable
WHERE [email protected]
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 ;
我建议像“SELECT * FROM表,其中没有限制= 1?”。关键字LIMIT取决于你的数据库,对于DB2来说,它将是“select * from table where no =?only first 1 rows only”。
这是一个选项,将返回第一个ID号。
SELECT MIN(Id)
FROM Table a
WHERE No = ?
这是什么RDBMS? – 2011-04-28 11:54:58
你是怎么指定颜色之间的顺序关系的(先是黑色,然后是银色等等) – 2011-04-28 14:34:15