使用WHERE但不使用FROM在MySQL中生成基于会话变量的序列

时间:2014-04-13 16:50:00

标签: mysql

感谢您的关注

这个MySQL问题多年来一直困扰着我,我今天已经决定了解问题的最后一天,如果可能的话,一劳永逸地找出答案。

在上下文中,我想生成一些查找表,以便我的应用程序可以访问预先计算的信息并节省执行期间的时间。要做到这一点,我需要预先生成一些数字列表,一个例子是从0到23表示一天中的小时数。

我很清楚这可以通过在每个整数的每个SELECT之间使用UNION ALL键入这些来完成,但是我想努力寻求更优雅的解决方案并且通常使用类似于以下内容:

SET @VCounter := 0;
SELECT (@VCounter := @VCounter + 1) - 1 FROM anyTable WHERE @VCounter < 24;

令我烦恼的部分是我必须使用一个表(任何包含超过24行的表)才能使用它,即使我没有使用此表中包含的信息。这会让我感到很恼火:

1) - 如果表包含少于24行,则该语句不会返回完整列表

2) - 我不需要表格中的任何信息

我希望能够使用的内容更接近以下内容:

SET @VCounter := 0;
SELECT (@VCounter := @VCounter + 1) WHERE @VCounter < 24;

然而,这会因语法错误而失败。

我想知道是否有人知道如何简洁地生成这个数字序列并且没有浪费代码,希望我能学到新东西

提前致谢,

詹姆斯

0 个答案:

没有答案