带有filter、sortby、map和take的update语句

mklgxw1f  于 2021-06-20  发布在  Mysql
关注(0)|答案(0)|浏览(241)

我正在针对mysql数据库编写以下update语句:

Orders.filter(_.cookie === cookie).sortBy(_.id.desc).map(_.payTypeId).take(1)
``` `sortBy` 以及 `take(1)` 用于确保我只更新特定cookie的最新订单。这个查询作为一个常规的select可以很好地工作,这里的问题是将它用作update语句。
我得到的错误是:

[SlickException: A query for an UPDATE statement must resolve to a comprehension with a single table -- Unsupported shape: Comprehension s2, Some(Apply Function =), None, ConstArray((Path s2.id,Ordering(Desc,NullsDefault))), None, None, Some(LiteralNode 1 (volatileHint=false)), None, false]

如果我移除 `take(1)` 一切正常。为什么我会犯这个错误?
github似乎对此进行了讨论,但没有解决方案。
使用纯sql的变通方法
(此查询返回 `Vector[Int]` )

val updateQuery =
sql"""
UPDATE
orders
SET
orders.pay_type_id = $id
WHERE
orders.cart_cookie = $cookie
ORDER BY id desc
LIMIT 1
""".as[Int]

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题