从表中选择对象,其中集合和排序中的ID与对这些ID进行排序的方式相同

时间:2016-08-08 08:37:38

标签: sql postgresql

我们假设我的表格 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可以是任何内容,在此查询之前动态检索它们。 非常感谢您的帮助和建议。

2 个答案:

答案 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()集合中项目的排序,这可能无法保证。更好的解决方案是使用一组对。