簡體   English   中英

MySQL INNER JOIN兩個表,其中一個表包含具有相同ID的多行

[英]MySQL INNER JOIN two tables where one table contains multiple rows with same id

我想從一個表中獲取ID,具體取決於另一個表中具有相同ID的行。 僅當另一個表中的所有行均與每個行請求匹配時,才必須返回ID。 我的表結構如下所示。

tbl_one 
------------------  
id  companyName 
------------------
1   CompanyOne  
2   CompanyTwo  

tbl_two 
-----------------------------   
id  type        content
-----------------------------
1   zipcode     54321
1   category    Car dealers
2   zipcode     54321
2   category    Supermarkets

我已經嘗試使用INNER JOIN,但是無論如何嘗試,我似乎都無法使其正常工作。

SELECT 
    tbl_one.id FROM tbl_one 
INNER JOIN 
    tbl_two
ON
    tbl_two.id = tbl_one.id 
WHERE
( 
    type = 'zipcode' AND content = '54321'
) 
  AND
( 
    type = 'category' AND content = 'Car dealers' 
)

有人可以回答我我的查詢問題嗎? 謝謝 :)

嗯..試試這個:-

/*
drop    table tbl_one;
drop    table   tbl_two;

create  table tbl_one(id int, companyName varchar(20)) ;
Insert into tbl_one values
(1,  'CompanyOne'), 
(2,  'CompanyTwo')  ;

create  table tbl_two(id int,type varchar(20), content varchar(20));
insert into tbl_two values
(1 ,  'zipcode'  ,   '54321'),
(1 ,  'category' ,   'Car dealers'),
(2 ,  'zipcode'  ,   '54321'),
(2 ,  'category' ,   'Supermarkets');
*/
SELECT t1.*
FROM  tbl_one t1
WHERE t1.id in (select t2.id from tbl_two t2 where t2.id = t1.id and t2.type = 'zipcode' AND t2.content = '54321')
and     t1.id in (select t3.id from tbl_two t3 where t3.id = t1.id and t3.type = 'category' AND t3.content = 'Car dealers')

您提供的查詢不起作用,因為tbl_two.type不能同時等於“郵政編碼”和“類別”。 也許這就是你的意思? 請注意第7行的OR運算符,而不是您使用AND ...

SELECT one.id
FROM tbl_one one
JOIN tbl_two two
ON   two.id = one.id
WHERE
     two.type = "zipcode" AND two.content = "54321"
OR   two.type = "category" AND two.content = "car dealers"

或者,也許您想在54321中找到所有的汽車經銷商,在這種情況下,您將需要兩個聯接...

SELECT one.id
FROM tbl_one one
JOIN tbl_two one_zip
ON   one_zip.id = one.id
AND  one_zip.type = "zipcode"
AND  one_zip.content = "54321"
JOIN tbl_two one_cat
ON   one_cat.id = one.id
AND  one_cat.type = "category"
AND  one_cat.content = "car dealers"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM