2015-11-02 30 views
2

我嘗試了一些重複的做一個簡單的選擇,當一個錯誤,但我的sql語句總是與這個錯誤結束:SQL - 選擇結束了在合併

Command not properly ended

我有一個表像這樣

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

我的選擇其實很簡單

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

Reults:

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 

我在做什麼錯?

信息到DB:古普塔的Centura SQLBase 7.0.1

+0

@Simo不,這不是問題,我測試過它現在。添加AS導致錯誤到AS位置^^ – Dwza

+0

@AndrewB,遺憾的是沒有。我嘗試了所有行。相同的結果:( – Dwza

+0

SQL區分大小寫?您在第一個FROM部分中使用「EAN」和「ean」,看起來像表名和列名,您從「EAN」中選擇,並在從「ean 「。如果它們是不同的表,對於」GROUP BY ean「,是不是從你選擇的表名而不是你要選擇的列? – AndrewB

回答

3

我不認爲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) 
+1

有些人似乎不是從這個世界知道所有這些東西:D第一個不工作,但第二個。這個選擇需要很多時間,但實際上這是我想要的結果。謝謝:) – Dwza

+0

順便說一下,我知道我們應該使用一個新的數據庫,但在這種情況下,這是可悲的是不可能的。其實這是一個運行系統,並建立這個新的它會花費很多時間:) – Dwza

0
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; 

我給了一個別名CNT到COUNT(*)。這應該會讓錯誤消失。

+0

不行,不好意思..還是一樣的錯誤 – Dwza

+0

再試一次。我在子查詢中給了表ean一個別名。 – Adish

+0

對不起,沒有。 'INNER' – Dwza

0

試試這個(添加別名的表與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; 
+0

跳出使用AS導致相同的錯誤,但光標跳轉到AS的位置,而不是innerjoin。在這種情況下,我不能使用AS。 – Dwza

+0

您正在使用哪個數據庫? – MusicLovingIndianGirl

+0

如果你放棄了「AS」,但將所有其他內容與@ AishvaryaKarthik的答案保持一致,會發生什麼? –