2013-04-05 52 views
-2

OK,假設我們有3個或更多讓我們說具有相同的結構的 「k」 表:
表1:MySQL的:3個或更多SELECT的結果之間的交叉

id customer_id 
1 35 
2 36 
3 37 

表2:

id customer_id 
1 35 
2 38 
3 39 

...
表K:

id customer_id 
1 35 
2 69 
3 52 

如何選擇出現在我所有的表中的所有CUSTOMER_ID(換句話說:交叉口),在這個例子中,如果有3代表的結果應該是這樣的

id customer_id 
1 35 

我會很感激如果任何人能請幫助

+1

這個問題並沒有表現出任何的研究工作。 **做你的作業很重要**。告訴我們你發現了什麼,***爲什麼它不符合你的需求。這表明你已經花時間去嘗試幫助你自己了,它使我們避免重申明顯的答案,最重要的是它可以幫助你得到更具體和相關的答案。 [FAQ](http://stackoverflow.com/questions/how-to-ask)。 – Kermit 2013-04-05 15:19:49

+0

對不起哥們,我匆忙得到答案,下次:) – 2013-04-05 15:44:39

回答

0
SELECT t1.customer_id 
FROM `table 1` AS t1 
INNER JOIN `table 2` AS t2 ON t1.customer_id = t2.customer_id 
-- ... 
INNER JOIN `table k` AS tk ON t1.customer_id = tk.customer_id 
+0

這似乎滿足了需要,thx – 2013-04-05 15:54:24

0

這應該工作:

SELECT table1.id, table1.customer_id 
FROM table1, table2, ..., tableK 
WHERE table1.id=table2.id 
AND table1.id=table3.id 
... 
AND table1.id=tableK.id 

您還可以定義別名每個表中爲簡單起見:

FROM table1 a, table2 b, ..., tableK k 
WHERE a.id=b.id 
0

試試這個:

SELECT 
    customer_id 
FROM (
    SELECT 
     customer_id 
     1 as counter 
    FROM 
     table1 

    UNION ALL 

    SELECT 
     customer_id 
     1 as counter 
    FROM 
     table2 

    .... 

    SELECT 
     customer_id 
     1 as counter 
    FROM 
     tablek 

) as tmp 
GROUP BY 
    customer_id 
HAVING 
    SUM(counter) = k 
0
create table dela (
    id int 
); 
create table delb (
    id int 
); 
create table delc (
    id int 
); 

drop table dela; 

insert into dela values (1),(2),(3); 
insert into delb values (5),(4),(3); 
insert into delc values (5),(1),(3); 

select 
    a.id 
from 
    dela a 
     join 
    delb b ON a.id = b.id 
     join 
    delc c ON a.id = c.id;