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 )
我尝试为一些重复项做一个简单的 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 )