【发布时间】:2011-02-11 14:09:20
【问题描述】:
我有一个相当简单的任务,我需要先选择具有值为 1 的特定字段的行,然后选择值为 2 的行,最后选择值为 0 的所有其他行。
我使用连接来获取哪些项目属于哪个类别。我认为执行 3 次选择并使用联合会组合到正确的顺序,但我错了 :)
我的SQL如下:
SELECT * FROM tblcompanycategory
INNER JOIN tblcompany
ON tblcompany.idcompany = tblcompanycategory.idcompany
WHERE tblcompanycategory.idcategory = @category AND tblcompany.intpremium = 1
UNION
SELECT * FROM tblcompanycategory
INNER JOIN tblcompany
ON tblcompany.idcompany = tblcompanycategory.idcompany
WHERE tblcompanycategory.idcategory = @category AND tblcompany.intpremium = 2
UNION
SELECT * FROM tblcompanycategory
INNER JOIN tblcompany
ON tblcompany.idcompany = tblcompanycategory.idcompany
WHERE tblcompanycategory.idcategory = @category AND tblcompany.intpremium = 0
我的结果没有按 1、2 和 0 排序。我在这里做错了什么??
* 解决方案 * 谢谢你们的帮助。下面是我使用的最终 SQL。
SELECT * FROM tblcompanycategory
INNER JOIN tblcompany
ON tblcompany.idcompany = tblcompanycategory.idcompany
WHERE tblcompanycategory.idcategory = @category
ORDER BY CASE tblcompany.intpremium WHEN 1 THEN 0 WHEN 2 THEN 1 WHEN 0 THEN 2 END
【问题讨论】:
标签: sql sql-server database tsql