[英]Select data from multiple single joined tables not completing
我有一個t00XX_b
20個表的命名方案,如t00XX_b
和一個對應的t00XX_b_results
,我想要做的就是加入所有這些對,並對所有這些表進行選擇,從而將數據添加到一個大表中。 從邏輯上來說,它應該這樣工作:
SELECT
*
FROM
(t0001_b AS t1
RIGHT JOIN t0001_b_results AS t2 ON t1.IndexResult = t2.IndexResult), /*generates ~20000 rows*/
(t0002_b AS t3
RIGHT JOIN t0002_b_results AS t4 ON t3.IndexResult = t4.IndexResult), /*generates ~6000 rows*/
...
但是,一旦我將表鏈接起來,查詢將不再完成。 如果我使用單個表對執行查詢,那么它將完美地工作。
這個例子很好用:
SELECT
*
FROM
(t0001_b AS t1
RIGHT JOIN t0001_b_results AS t2 ON t1.IndexResult = t2.IndexResult)
我看不到任何錯誤,但是我也不是SQL方面的專家。 怎么了? 有什么順序錯誤嗎?
我不知道這是否是您想要的邏輯 ,但是您的查詢無疑是正確的。 逗號是CROSS JOIN
運算符,用於創建笛卡爾乘積。
另外,我的猜測是MySQL將實現每個聯接對。
沒有樣本數據和理想的結果,我無法真正提出具體建議,但也許您想要這樣:
SELECT *
FROM t0001_b t1 RIGHT JOIN
t0001_b_results t2
ON t1.IndexResult = t2.IndexResult
UNION ALL
SELECT *
FROM t0002_b t3
t0002_b_results t4
ON t3.IndexResult = t4.IndexResult
. . .
筆記:
SELECT *
,尤其是對於UNION ALL
操作。 您應該顯式列出這些列,尤其是當這些表共享列名時。 LEFT JOIN
而不是RIGHT JOIN
。 語義更容易(“保留第一張表中的所有行”)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.