簡體   English   中英

選擇列包含多個記錄中的相同數據的行

[英]Select rows where column contains same data in more than one record

有很多類似標題的問題,但我找不到一個不涉及分組的答案(GROUP BY x HAVING COUNT(*)> 1),但我正在尋找的是一個查詢返回所有未分組的行(在MySQL中)。

說我有以下內容:

id  data
1    x
2    y
3    y
4    z

我希望查詢返回的是:

2    y
3    y

基於第2行和第3行在數據列中具有相同值的事實。

SELECT * FROM表WHERE [數據包含一些其他行中也存在的值]

你必須把它放在一個子查詢中

select * from table where data in (
    select data from table group by data having count(*) > 1
)
SELECT DISTINCT x.* 
  FROM table1 x 
  JOIN table1 y 
    ON y.id <> x.id      --   ids are NOT equal 
   AND y.data = x.data;  --   but data IS

http://sqlfiddle.com/#!2/f8910

這個查詢和上面的fP可能在性能方面大致相當 - 但是用這種方式重寫fP並觀察它......

SELECT DISTINCT x.id 
  FROM table1 x
  JOIN 
     ( SELECT data FROM table1 GROUP BY data HAVING COUNT(0) > 1 ) y
    ON y.data = x.data;

暫無
暫無

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

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