MSSQL /实体框架OrderBy如果存在?

时间:2016-05-03 16:24:17

标签: sql-server entity-framework tsql sql-server-2008-r2

想知道我是否可以通过这种语法获得一些帮助?我尝试了各种形式的“存在”和“IsNull”,但我无法得到它。

我有三张桌子:

Item            Package     ItemsInPackages
-----------     -------     ---------------
ItemID          PackageID   ID
Name            Desc        PackageID
Desc                        ItemID

现在,我想返回现有所有项目的列表......

SELECT * FROM Items

但现在我想对它进行排序,以便我可以将[PackageID] = 5中存在的所有[Items]浮动到结果集的顶部。

I.e pseudo code ...

ORDER BY (ROW EXIST [ItemsInPackages].PackageID = 5) Something Something DESC?

使用MSSQL 2008&实体框架7. EF或TSQL语法对我有用。

提前致谢!

2 个答案:

答案 0 :(得分:1)

您可以使用select * from Items as I order by case when exists ( select 42 from ItemsInPackages as IIP where IIP.ItemID = I.ItemID and IIP.PackageID = 5 ) then 0 else 1 end 表达式:

{{1}}

答案 1 :(得分:0)

尝试这样的事情。未经测试

SELECT * FROM Items
WHERE [ItemsInPackages].PackageID = 5
ORDER BY [ItemsInPackages] DESC;