[英]How to GROUP multiple records from two different SQL statements
我有一個名為tbl的表,其中包含我需要的所有數據。 該表中有許多列,但是出於本示例的目的,我將僅列出完成此任務所需的列。
這是在tbl中存儲數據的方式(注意 uID是char(20),cID是int)*:
uID cID
1 10
1 11
1 12
2 11
我們通常像這樣查詢該表
SELECT * FROM tbl WHERE uID = "1"
所以它返回
uID cID
1 10
1 11
1 12
但是我還需要返回uID不同但cID匹配的行。 或者,根據cID獲取第二行的uID(即2),然后執行以下select語句:
SELECT * FROM tbl WHERE uID in ('1','2')
該查詢將返回我要查找的內容
uID cID
1 10
1 11
1 12
2 11
該表包含很多行,我希望能夠以編程方式針對cID匹配且uID不同的每個調用執行此操作。
有什么建議么?
我認為這可能是您想要的:
SELECT *
FROM tbl
WHERE uID = '1'
UNION ALL
SELECT *
FROM tbl
WHERE uID <> '1' AND
EXISTS (select 1 from tbl tbl2 where tbl2.uId = '1' and tbl2.cID = tbl.cID);
或類似這樣的東西:
SELECT uID, cID
FROM tbl
WHERE uID IN
(
SELECT uID
FROM tbl
INNER JOIN
(
SELECT cID
FROM tbl
GROUP BY cID
HAVING count(*) > 1
) c ON c.cID = tbl.cID
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.