首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从逗号分隔的ids字符串构建WHERE查询?

如何从逗号分隔的ids字符串构建WHERE查询?
EN

Stack Overflow用户
提问于 2018-01-05 23:15:34
回答 1查看 106关注 0票数 0

我希望能够构建一个查询,它接受一个uuid字符串,并用逗号将其吐出来,以生成以下sql语句:

uuid

代码语言:javascript
复制
4506ef72-aa17-452b-9456-38d11c71897b,bd46629d-0e8c-4d70-874a-76bfade8ef14,b0c11580-7cde-4a4e-ba0a-30f9de52e3b5

sql

代码语言:javascript
复制
SELECT * FROM my-table WHERE uuid="4506ef72-aa17-452b-9456-38d11c71897b" OR bd46629d-0e8c-4d70-874a-76bfade8ef14 OR b0c11580-7cde-4a4e-ba0a-30f9de52e3b5 ORDER BY created DESC;

我尝试在下面的方法中使用sqlkorma生成这个查询,但是我在生成WHERE子句时遇到了问题。

代码语言:javascript
复制
(defn fetch [uuid]
  (->
    (korma/select* :my-table)
    (korma/order :created :DESC)

    (as-> query
          (if (not= uuid nil)
            (for [id (str/split uuid #",")]
              (korma/where query {:uuid id}))
            query))
    (korma/query-only))
)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-06 00:08:29

试一试:

代码语言:javascript
复制
(defn fetch [uuid]
  (-> (korma/select* :my-table)
      (korma/order :created :DESC)
      (korma/where {:uuid [in (str/split uuid #",")]})
      (korma/query-only)))

这不是OR-ing条件,而是使用IN

代码语言:javascript
复制
(println (korma/as-sql (fetch "x,x,x")))
SELECT "my-table".* FROM "my-table" WHERE ("my-table"."uuid" IN (?, ?, ?)) ORDER BY "my-table"."created" DESC
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48116371

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档