0

私は最初にこのスレッドに質問を投稿しました:
mysql - すべてのテーブルに存在する値を表示します

そしてアレルートはありがたいことに解決策を提案しました。私はそれを試してみましたが、すべてがうまくいくようでした。ただし、テーブルを追加したところ、何らかの理由で機能しなくなりました。

テストとして、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
);
4

1 に答える 1

0

結合を使用する場合、システムはすべてのレコードを取得し、それらを結合してから、フィルター (WHERE 句) を適用する必要があると思います。したがって、29 個のテーブルからデータを取得しようとすると、実際には各 user_id に対して 29*(cols_num) フィールドを取得しようとしており、データベースの設定または実現に応じて制限があります。

たとえば、サブクエリまたはexistsディレクティブを使用してみてください

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...
于 2013-04-11T04:28:06.850 に答える