首页 > 解决方案 > SQL 不断告诉语法 - INNER JOIN 出错,但没有给出任何理由

问题描述

DELETE FROM mitarbeiter m
WHERE m.pers_nr IN  (SELECT COUNT(*) AS count 
                     FROM kunde 
                     GROUP BY betreuer)
INNER JOIN (SELECT COUNT(*) AS count 
            FROM kunde 
            GROUP BY betreuer ORDER BY count ASC LIMIT 1) AS x ON count = x.count

编译器输出为:

错误:FEHLER:»INNER« 第
10 行的语法错误:INNER JOIN (SELECT COUNT(*) AS count FROM kunde GROUP B...

有人看到错误的来源吗?

标签: sqlpostgresqlsql-delete

解决方案


你的意思是内连接属于子查询,对吧?那里不需要内部连接。

DELETE FROM mitarbeiter m
WHERE m.pers_nr IN  (SELECT COUNT(*) AS count 
                     FROM kunde 
                     GROUP BY betreuer
                     ORDER BY COUNT(*) LIMIT 1);

编辑:这个删除了客户数量最少的员工(如果 kunde 中的 betreuer 表示他们在该表中的 ID):

DELETE FROM mitarbeiter m
WHERE m.pers_nr IN  
    (select betreuer 
         from kunde
         group by betreuer
         having count(*)=
         (
            SELECT count(*)
            FROM kunde 
            group by betreuer
            order by count(*) 
            limit 1
         )
      );

如果您只有 5 名员工并且所有人都有 3 名客户(那么所有人的客户数量最少),那么您将删除所有员工。

即使你只删除1,也想了很多这个逻辑。我是一名新员工,刚刚加入公司,如果在我注册后的早期运行并且还没有任何客户(而且你不知道我是否有一个非常庞大的客户组合,我会删除我)从前公司引进)。


推荐阅读