我想根据两个 varchar 列COL_A
和COL_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 中不起作用。有等效的吗?
我想根据两个 varchar 列COL_A
和COL_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 中不起作用。有等效的吗?
在您尝试的查询中使用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
语法和示例:
教程可能有帮助: