【发布时间】:2021-12-13 04:09:34
【问题描述】:
我有一个名为“ProductName”的表,它有几个类别,例如“Men”、“Women”、“Other”,每个类别都有子类别。
后面的代码将显示所有类别如果ParentId 为Null 并显示基于每个类别parentId 降级到类别的所有子类别。
我添加了一个新类别 "Kids",但我想在查询末尾显示 "Other",Now Kids 将显示为最后一个。
如果有人可以帮助我,我将不胜感激。谢谢
查询:
select
bn.[ProductId],
bn.[Name],
bn.[Store],
bn.[City],
bn.[ZipCode],
bn.[ParentId]
from
[dbo].[ProductName] bn
order by
case
when bn.ParentID is null
then bn.ProductId
else (
select ProductId
from ProductName parent
where parent.ProductId = bn.ParentID
)
end,
case when bn.ParentID is null then 1 end desc,
bn.ParentID
【问题讨论】:
-
抱歉,没有答案。老实说,这很简单,只是在尖叫糟糕的数据库设计。将您的类别和子类别设置为适当的相关实体会使这变得非常容易。在您的类别实体中,您甚至可以有一个专门用于排序查询结果的优先级属性
-
这不能同时是 MySql 和 Sql Server。它是什么数据库?
标签: mysql sql sql-server database vb.net