首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Esqueleto:如何使用join删除项目

Esqueleto:如何使用join删除项目
EN

Stack Overflow用户
提问于 2015-09-29 11:55:23
回答 3查看 385关注 0票数 9

是否可以使用esqueleto执行以下查询?

代码语言:javascript
复制
DELETE Table1
FROM Table1
INNER JOIN Table2 ON Table1.ID = Table2.ItemID

我试过了:

代码语言:javascript
复制
delete $ 
  from $ \(table1 `InnerJoin` table2) -> 
    on (table1 ^. Table1ID  ==. table2 ^. Table2ItemID)

奇怪的是,它生成了我在Haskell中见过的仅有的运行时错误之一

代码语言:javascript
复制
ERROR:  syntax error at or near "INNER"
LINE 2: FROM "table1" INNER JOIN "table2" ON "tab...

(基本上,DELETE错过了“table1”是不高兴的)

我还尝试向monad添加返回值,就像使用select一样,它可能会添加缺少的值。但是这失败了,因为delete需要一个m ()类型的monad。

有没有可能这就是Esqueleto所缺少的?

EN

回答 3

Stack Overflow用户

发布于 2019-08-17 13:48:48

我认为现在回答这个问题已经很晚了,但是你可以使用EXISTS

代码语言:javascript
复制
DELETE Table1
WHERE EXISTS (SELECT * FROM Table2 WHERE Table1.ID = Table2.ItemID)
票数 1
EN

Stack Overflow用户

发布于 2017-08-14 09:25:10

尝尝这个。

代码语言:javascript
复制
delete $
from $ \(table1 `InnerJoin` table2) -> do
on (just (table1 ^. Table1ID  ==. table2 ^. Table2ItemID)
票数 0
EN

Stack Overflow用户

发布于 2015-10-09 10:52:27

在MS SQL中,您可以使用您可以通过以下方式使用join删除表

代码语言:javascript
复制
DELETE Table1,Table2  FROM Table1 INNER JOIN Table2
WHERE Table1.Id1= Table2.Id1 and Table1.Id1= '1'
票数 -3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32835427

复制
相关文章

相似问题

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