当我编写SQL查询时,我发现自己常常认为“单一查询无法做到这一点”.当发生这种情况时,我经常转向使用临时表(一种或另一种)的存储过程或多语句表值函数,最后简单地组合结果并返回结果表.
我想知道是否有人知道,仅仅作为理论问题,是否应该可以编写任何查询,将单个结果集作为单个查询(而不是多个语句)返回.显然,我忽略了代码可读性和可维护性等相关点,甚至可能是查询性能/效率.这更多是关于理论的 – 它可以做到……而且不用担心,当多语句在所有情况下更适合我的目的时,我当然不打算开始强迫自己编写单语句查询,但是它可能会让我思考是否有一个可行的方法来从单个查询获得结果.
我想一些参数是有序的 – 我正在考虑一个关系数据库(如MS sql),其中的表遵循常见的最佳实践(例如所有具有主键的表等等).
注意:为了赢得“接受的答案”,您需要提供明确的证明(参考网络资料或类似内容).
解决方法
至少使用最新版本的Oracle是绝对可能的.它有一个’model clause’,它使sql turing完整. (
http://blog.schauderhaft.de/2009/06/18/building-a-turing-engine-in-oracle-sql-using-the-model-clause/).当然,这一切都有通常的限制,我们实际上没有无限的时间和记忆.
对于没有这些abdominations的普通sql方言,我认为不可能.
我无法看到如何在’普通sql’中实现的任务将是:
假设一个表具有整数类型的单个列