2015-05-20 86 views
2

請向我解釋在'FROM TABLE_ABC A'之後使用逗號。它是如何工作在SQL查詢的執行。SQL-TABLE創建

CREATE TABLE ABCD AS 
(SELECT A.* 
FROM TABLE_ABC A, 
(SELECT COL_1,COL_2 FROM 
(SELECT B.*,C.* FROM 
TABLE_XYZ B, TABLE_MNO C 
WHERE B.COL_X=C.COL_Y 
)D 
)A.COL_C=D.COL_D 
) 
WITH DATA PRIMARY INDEX(SASAJS) 
+0

這是舊式的加入這兩個表,如果你不在WHERE子句中定義條件你想加入哪一列,它將交叉連接 –

+0

我得到語法錯誤......哪個DBMS是這樣的? – jarlh

回答

0

您正在使用select來創建也是從另一個子查詢創建的第二個表。看到這樣,你會更好地理解它:

CREATE TABLE ABCD AS(
      SELECT 
       A.* 
      FROM 
       TABLE_ABC A, 
       (
        SELECT 
         COL_1, 
         COL_2 
        FROM 
         (
          SELECT 
           B.*, 
           C.* 
          FROM 
           TABLE_XYZ B, 
           TABLE_MNO C 
          WHERE 
           B.COL_X = C.COL_Y 
         ) D 
       ) 
      WHERE 
       A.COL_C = D.COL_D 
) WITH DATA PRIMARY INDEX(SASAJS) 

但你原來的代碼是缺乏A.COL_C = D.COL_D之前WHERE子句。我包括它。

我假設B. *或C. *有一個名爲COL_D的列,A也有它。這也將是使之前的最後一個WHERE

1

它類似於加入

select * from #tempA ta join #tempB tb 
on ta.ID = tb.ID 

一樣

select * from #tempA ta, #tempB tb 
where ta.ID = tb.ID 

使用連接,如果d更好,因爲後)的代碼更易於閱讀