SQL Server相当于这个MySQL排序子句

时间:2013-04-23 04:28:13

标签: sql sql-server sql-server-2008 tsql

我想根据两个varchar列COL_ACOL_B对结果进行排序。

如果COL_A的值为('val1', 'val2', 'val3'),我希望它显示在顶部,否则我希望它显示在底部。然后,我想在COL_B上做一个简单的词典排序。在MySQL中,我会这样做:

ORDER BY IF(COL_A IN ('val1', 'val2', 'val3'), 0, 1), COL_B

但这在SQL Server 2008中不起作用。是否有等价的?

1 个答案:

答案 0 :(得分:5)

在您尝试过的查询中使用case when代替IF。

ORDER BY (Case When COL_A IN ('val1', 'val2', 'val3') Then 0 Else 1 End), COL_B

将其替换为您尝试过的查询。

<强> MSDN:

http://msdn.microsoft.com/en-IN/library/ms181765.aspx

语法和示例:

http://blog.sqlauthority.com/2007/04/14/sql-server-case-statementexpression-examples-and-explanation/

教程可能有帮助:

http://www.tizag.com/sqlTutorial/sqlcase.php