Postgresql Postgres删除查询-计数(*)附近的语法错误

Postgresql Postgres删除查询-计数(*)附近的语法错误,postgresql,join,Postgresql,Join,我想从F表中删除记录,该表只有一个H记录,并且该记录抛出了76个错误 我在加入并执行计数*检查时遇到语法错误。有什么正确的方法吗 delete from F fb where id in(select h.id from H h join MI m on h.m_i_id=m.id join ERROR e on e.m_i_id=m.id join ERRORKODE ek on e.errorkode_id=ek.id where errorkode=76) and

我想从F表中删除记录,该表只有一个H记录,并且该记录抛出了76个错误

我在加入并执行计数*检查时遇到语法错误。有什么正确的方法吗

 delete from F fb where id in(select h.id from H h
     join MI m on h.m_i_id=m.id
 join ERROR e on e.m_i_id=m.id
 join ERRORKODE ek on e.errorkode_id=ek.id where errorkode=76) and
     select count(*) from H h where h.f_id = fb.id) =1

delete的where子句有两个条件,两个条件之间用and分隔,第二个条件是query,应该放在括号中。select关键字前缺少左括号。

第二个and条件并从H H中选择count*,其中H.f_id=fb.id=1没有意义。你忘记带括号了吗?e、 g.并从H中选择count*,其中H.f_id=fb.id=1Tip of the day:不需要将表H别名为H。由于您没有双重引用YEA Postgres对对象表、列等名称不区分大小写,因此H和H是相同的。@Belayer这可能是匿名造成的。OPIf后来删除了一些带有真实表名的注释。如果是原因,请接受答案,将问题标记为已解决。我还建议保持SQL的格式。没有单一的推荐方法,只能选择一种并保持一致。括号解决了语法错误…但我想优化查询,就像如果第二个条件的计数为1,那么只有第一个条件的计数为1…这里我想删除所有行发生第一个条件的情况@对于不同的问题,欢迎您发布另一个SO问题,并且在问题编辑器中有比在评论中更方便的环境来解释您想要实现的目标。我个人希望能够澄清H.id和H.fb_id之间的区别,它们都用于连接H和F表。也许在“内部选择”中加入左键对您来说是一个解决方案,但这只是一个猜测。努力表达好这个问题,我相信你会得到你想要的答案。h是h表的别名…F表的fb别名…fb_id是一个列名…对于问题,我需要仔细阅读手册,使其更具可读性和表达力