【问题标题】:mysql evaluate function at specified integer valuesmysql 在指定的整数值处评估函数
【发布时间】:2016-04-03 23:40:22
【问题描述】:

我怎样才能在 MYSQL 中做这样的事情?

SELECT MyFunction(x) where x in (1,2,7,20,30);

似乎应该存在一个简单的查询,在 Oracle 中我可以使用 Dual 表轻松完成,但我没有看到在 MySQL 中执行此操作的技巧。请注意,在我的情况下,1、2、7、20、30 不是来自表(在这种情况下,这很容易,只是一个简单的连接)。在我的情况下,我将在 C# 中生成查询(特别是整数值),然后进行 DB 调用。

有什么想法吗?

【问题讨论】:

    标签: mysql


    【解决方案1】:

    示例输出会有所帮助,但可能是这样的......

    Select myFunction(X)
    FROM (Select 1 UNION Select 2 union select 7 union select 20 union select 30)\
    

    替代:

    --伪...

    Select myFunction(X)
    FROM (Generate Table containing values Min to max of range passing in) 
    where Value in (your list);
    

    类似:Select a sequence between two numbers on MySQL

    【讨论】:

    • 这对我有用,因为在我目前的情况下,我将有最多 10 个整数值!我想对于较大的集合没有更清洁的解决方案,比如 50 个值?一种避免有些笨拙的“联合选择”重复 50 次的方法?
    • 由于提供的值不是基于模式的,我们不能循环生成它们。笨拙的联合选择是我在这里能想到的全部......除非......我们知道最小最大值,那么我们可以循环并生成一个集合,比如 1-1000,然后简单地说在哪里......但我不是确定那更干净。
    【解决方案2】:

    union 是一种方法。

    SELECT (x + 100) 
    FROM (select 1 as x union select 2 union select 7 union select 20 union select 30) t;
    

    输出:

    mysql> SELECT (x + 100)
        -> FROM (select 1 as x union select 2 union select 7 union select 20 union select 30) t;
    +-----------+
    | (x + 100) |
    +-----------+
    |       101 |
    |       102 |
    |       107 |
    |       120 |
    |       130 |
    +-----------+
    5 rows in set (0.00 sec)
    

    【讨论】:

      猜你喜欢
      • 2014-02-12
      • 1970-01-01
      • 1970-01-01
      • 2018-12-18
      • 1970-01-01
      • 2012-09-14
      • 1970-01-01
      • 2019-06-03
      • 1970-01-01
      相关资源
      最近更新 更多