我正在针对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]
暂无答案!
目前还没有任何答案,快来回答吧!