2013-04-11 69 views
0

中存在價值我原本張貼的問題在這個線程:
mysql - display the values that exists in ALL the tables
內連接 - 檢查是否所有表

而且aleroot謝天謝地提出了一個解決方案。我試過了,一切似乎都奏效了。但是,我添加了更多的表格,出於某種原因它不再有效。

作爲測試,我在所有29個表中導入了相同的值。然而,當我運行下面的查詢時,它不會返回任何行。不知道我做錯了什麼。任何幫助將不勝感激。感謝

SELECT @rownum:=0; 
SELECT name FROM userinformation ui WHERE EXISTS (

SELECT user_id FROM userinformation t1 
INNER JOIN table1 USING(user_id) 
INNER JOIN table2 USING(user_id) 
INNER JOIN table3 USING(user_id) 
INNER JOIN table4 USING(user_id) 
INNER JOIN table5 USING(user_id) 
INNER JOIN table6 USING(user_id) 
INNER JOIN table7 USING(user_id) 
INNER JOIN table8 USING(user_id) 
INNER JOIN table9 USING(user_id) 
INNER JOIN table10 USING(user_id) 
INNER JOIN table11 USING(user_id) 
INNER JOIN table12 USING(user_id) 
INNER JOIN table13 USING(user_id) 
INNER JOIN table14 USING(user_id) 
INNER JOIN table15 USING(user_id) 
INNER JOIN table16 USING(user_id) 
INNER JOIN table17 USING(user_id) 
INNER JOIN table18 USING(user_id) 
INNER JOIN table19 USING(user_id) 
INNER JOIN table20 USING(user_id) 
INNER JOIN table21 USING(user_id) 
INNER JOIN table22 USING(user_id) 
INNER JOIN table23 USING(user_id) 
INNER JOIN table24 USING(user_id) 
INNER JOIN table25 USING(user_id) 
INNER JOIN table26 USING(user_id) 
INNER JOIN table27 USING(user_id) 
INNER JOIN table28 USING(user_id) 
INNER JOIN table29 USING(user_id) 
WHERE t1.user_id = ui.user_id 
); 

回答

0

我想,當你使用的加入,系統讀取所有的記錄,它們連接在一起,然後應用過濾器(WHERE子句)。因此,當您嘗試從29個表中獲取數據時,實際上您試圖爲每個user_id獲取29 *(cols_num)字段,並且存在一個限制取決於您的數據庫設置或實現。

嘗試使用子查詢或存在的指令,例如

SELECT user_id FROM userinformation t1 WHERE 
EXISTS (SELECT user_id FROM table_1 t WHERE t.user_id=t1.user_id) AND 
EXISTS (SELECT user_id FROM table_2 t WHERE t.user_id=t1.user_id) AND 
SO ON...