我们假设我的表格 table_data serial id 和 text 名称
select * from table_data where id in (3, 1, 5, 6, 2);
结果
id | 名称
6 | name6
5 | NAME5
1 | NAME1
3 | NAME3
2 | NAME2
但我希望将结果排序为这些ID。
id | 名称
3 | NAME3
1 | NAME1
5 | NAME5
6 | name6
2 | NAME2
这些ID可以是任何内容,在此查询之前动态检索它们。 非常感谢您的帮助和建议。
答案 0 :(得分:0)
应按顺序使用CASE:
try
{
string euroNumber = "€4.00";
// Will throw a FormatException
double parsedNumber = Double.Parse(euroNumber, NumberStyles.Currency);
}
catch (FormatException ex)
{
string stringThatThrewTheException; // should be "€4.00" in this case
// [Omitted] Sending to server logic
}
答案 1 :(得分:0)
CREATE TABLE table_data (id INTEGER NOT NULL PRIMARY KEY , ztext text);
INSERT INTO table_data(id, ztext) VALUES
(1, 'One'), (2, 'Two'), (3, 'Three'), (4, 'Four'), (5, 'Five'), (6, 'Six');
WITH vals(val) AS (
VALUES (3), ( 1), ( 5), ( 6), ( 2)
)
, list(id,rnk) AS (
SELECT val
, row_number() OVER () AS rnk
FROM vals
)
SELECT t.id,t.ztext
FROM table_data t
JOIN list l ON l.id = t.id
ORDER BY l.rnk
;
注意:这取决于VALUES()
集合中项目的排序,这可能无法保证。更好的解决方案是使用一组对。