以下是爲特定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