Esqueleto:如何使用联接删除项目

jam*_*idh 9 sql haskell esqueleto

使用esqueleto可以进行以下查询吗?

DELETE Table1
FROM Table1
INNER JOIN Table2 ON Table1.ID = Table2.ItemID
Run Code Online (Sandbox Code Playgroud)

我试过了:

delete $ 
  from $ \(table1 `InnerJoin` table2) -> 
    on (table1 ^. Table1ID  ==. table2 ^. Table2ItemID)
Run Code Online (Sandbox Code Playgroud)

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

ERROR:  syntax error at or near "INNER"
LINE 2: FROM "table1" INNER JOIN "table2" ON "tab...
Run Code Online (Sandbox Code Playgroud)

(基本上,不幸的DELETE是错过了"table1")

我也尝试在monad中添加一个返回值,与select一样可能会添加该值.但这失败了,因为删除需要monad类型m ().

这可能是Esqueleto遗失的吗?

Moi*_*azi -3

在 MS SQL 中,您可以使用以下方式使用连接删除表

DELETE Table1,Table2  FROM Table1 INNER JOIN Table2
WHERE Table1.Id1= Table2.Id1 and Table1.Id1= '1'
Run Code Online (Sandbox Code Playgroud)