SQL Select在组合时会出现错误

SQL Select在组合时会出现错误,sql,sqlbase,sqltalk,Sql,Sqlbase,Sqltalk,我尝试对一些重复项执行简单的选择,但我的sql语句总是以以下错误结束: 命令未正确结束 我有一张这样的桌子 EAN STR ============= ==== 8030524096397 AAAA 8030524096397 BBBB 8030524096731 XXXX 8030524096731 YYYY 8030524096324 CCCC 我的选择其实很简单 SELECT EAN, COUNT(*) FROM ean GR

我尝试对一些重复项执行简单的选择,但我的sql语句总是以以下错误结束:

命令未正确结束

我有一张这样的桌子

EAN              STR
=============    ====
8030524096397    AAAA
8030524096397    BBBB
8030524096731    XXXX
8030524096731    YYYY
8030524096324    CCCC
我的选择其实很简单

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。这将使错误消失。

尝试此操作(使用
作为
关键字向表中添加别名)


我认为SQLBase 7.01不支持正确的ANSI
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;
第二,
中的

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

@Simo不,这不是问题,我现在已经测试过了。将AS results错误添加到AS位置^^@AndrewB,遗憾的是没有。我一排都试过了。同样的结果:(SQL是区分大小写的,对吗?您似乎在使用“EAN”和“EAN”作为表名和列名,在第一部分中,您从“EAN”中选择,在联接中,您从“EAN”中选择。如果它们是不同的表,对于“按EAN分组”,EAN不是您正在选择的表名,而不是要分组的列吗?@AndrewB:no。(标准)SQL不区分大小写。
EAN
EAN
EAN
都是相同的标识符。通过测试,没有CS的问题。但好主意:)使用AS会导致相同的错误,但游标会跳到AS的位置,而不是innerjoin。我猜在这种情况下不能使用AS。您使用的是哪一个DB?如果您只是将
AS
删除,但其他所有内容都与@AishvaryaKarthik的答案相同,会发生什么?正如我在帖子中所评论的:Gupta Centura SQLBase 7.0.1我知道这已经发生了dy已得到回答,但如果您需要了解更多关于SQLBase的信息,这里有一个链接,指向从v8到v12.1的每个版本的一些手册:请重试。我在子查询中为表ean提供了一个别名。抱歉,没有。跳出“内部”部分有些人似乎不来自这个世界,他们不知道所有这些内容:D第一个不工作,但第二个工作。This select需要花费很多时间,但实际上这是我想要的结果。谢谢:)顺便说一句,我知道我们应该使用更新的数据库,但很遗憾,在这种情况下,这是不可能的。实际上,它是一个正在运行的系统,构建这个新系统需要花费很多时间:)
SELECT *
FROM EAN E
WHERE E.EAN IN ( SELECT EAN FROM ean GROUP BY ean HAVING COUNT(*) > 1 )