【问题标题】:Python list elements in multiple SQL queries in the Like operatorLike 运算符中的多个 SQL 查询中的 Python 列表元素
【发布时间】:2020-08-04 08:53:17
【问题描述】:

我正在尝试运行多个SQL queries,其中LIKE 运算符包含Python 中列表的每个元素。我有一长串字符串

l = ['string1', 'string2', 'string3',....]

query_1 = "SELECT COUNT(request) FROM table WHERE request LIKE 'l[0]' AND DATE BETWEEN 'date1' AND 'date2'".format(l[0])
query_2 = "SELECT COUNT(request) FROM table WHERE request LIKE 'l[1]' AND DATE BETWEEN 'date1' AND 'date2'".format(l[1])
query_3 = "SELECT COUNT(request) FROM table WHERE request LIKE 'l[2]' AND DATE BETWEEN 'date1' AND 'date2'".format(l[1])

等等。

如何在每个包含列表元素的查询中使用 LIKE 运算符同时运行多个查询?是否可以在多个查询中使用execute 函数,或者它只能与一个查询一起使用?我会使用 for 循环吗?

编辑:在这个问题的前一个版本中,我询问了关于在LIKE 运算符中使用多个列表元素运行 ONE 查询。我意识到最终的查询是这样的:

SELECT COUNT(request) FROM table WHERE request LIKE 'l[0]' OR LIKE 'l[1]' OR LIKE 'l[2]' AND DATE BETWEEN 'date1' AND 'date2'.

这不是我需要的。

【问题讨论】:

    标签: python sql list iteration


    【解决方案1】:

    使用

    query = "SELECT COUNT(request) FROM table WHERE request like '{}' AND DATE BETWEEN 'date1' AND 'date2'".format("' or request like '".join(l))

    【讨论】:

    • ServerException: Code: 62. DB::Exception: Syntax error: failed at position 262131: 'мусорныхсистем' 或类似'играугадай'的请求或类似'угадайкто'的请求或类似'покрывало..'的请求或请求点赞。超出最大查询大小。堆栈跟踪:
    【解决方案2】:

    应该可以了

    l = ['string1', 'string2', 'string3',....]
        
    query = "SELECT COUNT(request) FROM table WHERE request like {} AND DATE BETWEEN 'date1' AND 'date2'".format(", ".join(l))
        client.execute(query)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-01
      • 2018-03-25
      • 1970-01-01
      相关资源
      最近更新 更多