簡體   English   中英

如何對來自兩個不同SQL語句的多個記錄進行分組

[英]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.

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