2016-06-15 107 views
1

我有這樣一個表..2個MySQL查詢一次

[id][Col1][Col2][id_duplicated] 
10 abc1 defg NULL 
12 text text NULL 
50 abc2 text NULL 
90 NULL NULL 10  
500 NULL NULL 10 
620 NULL NULL 50 
700 text text NULL 

Id_duplicated是一個值,標識是從該行「ID」副本在同一個表..如果我選擇ID 620將從ID顯示所有值50

問題:

僅將顯示行ID = 10id = 50但我還需要顯示是否有任何這些ID的副本

我想我需要一個子查詢,首先找到是否有任何'在id_duplicated等於10和50以及等等等等....

所以在最後我需要一個查詢顯示該結果

[id][Col1][Col2][id_duplicated] 
10 abc1 defg NULL 
50 abc2 text NULL 
90 NULL NULL 10  
500 NULL NULL 10 
620 NULL NULL 50 

對不起我的英語

+0

雖然有可能是一個使用情況下,我在這裏失蹤,但爲什麼在所有商店的重複?如果你這樣做是爲了通過存儲空值而不是值來節省某些空間,你所做的就是將複雜性(和時間)轉移到你的查詢上。我會考慮重新組織你的數據,並做出一些艱難的決定,你爲什麼要以這種方式存儲東西。 下面的答案之一可能確實有效,將關鍵字EXPLAIN置於查詢的下方,並查看MySQL如何取得結果。 –

+0

好吧..想象一下,你有一個視頻在vhs ..你創建一個新的條目.. ej。 id = 10然後你做一個副本id = 90(dvd),然後從mp4(id = 500)的另一個副本,包含與原來的一個相同的描述...相同的程序,相同的一切...而不是有許多副本相同的媒體,我只保留一個..其他人只是鏈接到主媒體,你可以追蹤什麼是第一媒體或格式..舉例說明.. – Musikdoktor

+0

坦率地說,存儲比計算時間便宜得多,但作爲只要你想到了,儘管我是遊戲​​。 –

回答

2

如果你想要更多的行即可使用聯合和d一個選擇尋找結果的標識加入id_duplicated:

http://sqlfiddle.com/#!9/ad817/8

select id,col1, col2, id_duplicated 
    from table 
    where col1 like '%abc%' 
UNION 
select id, col1, col2, id_duplicated 
    FROM table 
    WHERE id_duplicated IN (select id from table where col1 like '%abc%')