SQL-Select 组合时出现错误

SQL-Select ends up in an Error when combined

我尝试为一些重复项做一个简单的 select,但我的 sql 语句总是以这个错误结束:

Command not properly ended

我有的是这样的table

EAN              STR
=============    ====
8030524096397    AAAA
8030524096397    BBBB
8030524096731    XXXX
8030524096731    YYYY
8030524096324    CCCC

我的select其实很简单

SELECT EAN, COUNT(*) FROM ean GROUP BY ean HAVING COUNT(*) > 1;

结果:

EAN               COUNT(*)
=============     ========
8030524096397        2
8030524096731        2

一切都很好,直到这里!现在我想要重复的 STR 并试试这个

SELECT * FROM EAN E 
    INNER JOIN ( SELECT EAN, COUNT(*) FROM ean GROUP BY ean HAVING COUNT(*) > 1 )  
R ON 
E.EAN = R.EAN;

但是这导致了这个错误。

正是这样说的:

SELECT * FROM EAN E
INNER JOIN ( SELECT EAN, COUNT(*) FROM ean GROUP BY ean HAVING COUNT(*) > 1 )  R ON
^
Error: Command not properly ended

我做错了什么?

数据库信息: Gupta Centura SQLBase 7.0.1

SELECT * 
FROM EAN E 
INNER JOIN 
    (SELECT EA.EAN, COUNT(*) Cnt 
    FROM ean EA
    GROUP BY EA.ean 
    HAVING COUNT(*) > 1 
    ) R ON E.EAN = R.EAN;

我给 COUNT(*) 起了别名 Cnt。这应该会使错误消失。

试试这个(使用 AS 关键字向表添加别名)

SELECT * FROM EAN AS E 
INNER JOIN 
(SELECT EAN, COUNT(*) FROM ean GROUP BY ean HAVING COUNT(*) > 1) AS R 
ON 
E.EAN = R.EAN;

我认为 SQLBase 7.01 不支持正确的 ANSI JOIN 语法(另外:这是使用更现代产品的一个很好的理由)。该错误表明 INNER JOIN.

上存在问题

这里有两种可能的解决方案。

首先,令人讨厌的陈旧join语法:

SELECT *
FROM EAN E,
     ( SELECT EAN, COUNT(*) as cnt FROM ean GROUP BY ean HAVING COUNT(*) > 1 )  
R 
WHERE E.EAN = R.EAN;

其次,IN

SELECT *
FROM EAN E
WHERE E.EAN IN ( SELECT EAN FROM ean GROUP BY ean HAVING COUNT(*) > 1 )