想知道我是否可以通过这种语法获得一些帮助?我尝试了各种形式的“存在”和“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语法对我有用。
提前致谢!
答案 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;