【发布时间】:2012-08-09 15:29:41
【问题描述】:
我知道我可以发送UNION - 但有更好的方法吗?我们使用动态SQL 并将其存储在表中,其中一些语句具有ORDER BY 子句。我必须在顶部位置添加一个动态的“全部”选项,该选项也存储在数据库中,以填充应用层中的下拉菜单。
我知道这是一个不稳定的解决方案,但我被应用程序的当前设计困住了。除了更改存储过程之外,另一个选项是向数据模型和应用层添加一堆代码。如果UNION 是我唯一/最好的选择,我可以做到。我只是想知道是否有更好的方法在数据库方面。
另外,我不想讨论存储在数据库中的动态SQL 字符串的优点。这就是它的方式,这就是我必须使用的。谢谢大家!
【问题讨论】:
-
在 SQL 数据库中,没有 pre-defined 顺序,例如您不能在“位置 42”处插入一行 - 没有这样的东西。仅当您选择数据并明确指定
ORDER BY子句时才定义顺序。如果您需要强制执行排序,您可以添加例如sequence(int) 列并用适当的值填充它,以便您可以执行SELECT (list-of-cols) FROM dbo.YourTable ORDER BY sequence并按您想要/需要的顺序取回数据。 -
有一种即将来临的感觉。只是希望有办法。
-
您可以使用
NULL值来表示“全部”吗?它将在任何其他值之前排序,或者可以使用CASE调整ORDER BY以将其放在排序的另一端。
标签: sql sql-server-2005 insert union