2014-09-01 75 views
0

不同的行選擇我有以下表的MySQL,基於列的值

--------------------------- 
|ID |Image  | link | 
|01 |   | 02  | 
|02 |steve.jpg |   |   
|03 |eric.jpg |   |   
---------------------------- 

鏈路字段中存儲的ID,所以可以設置兩行之間的關係。

ID 01的鏈接字段設置爲02.所以我希望ID 01使用ID在該字段中設置的圖像,因此它將成爲steve.jpg。

如何獲取所有行,以便將鏈接字段設置爲那個圖片?

+0

有什麼奇怪的架構。爲什麼你在同一個表中有鏈接和圖像? – Barmar 2014-09-01 07:49:05

+0

這是一個很好的自毀模式:) – 2014-09-01 07:50:05

+0

你應該有鏈接在另一個表..爲什麼在同一個表? – 2014-09-01 07:53:40

回答

0
SELECT a.id, b.image, a.link 
FROM YourTable AS a 
JOIN YourTable AS b ON a.link = b.id 
UNION 
SELECT id, image, link 
FROM YourTable 
WHERE link IS NULL 
+0

謝謝。我已經嘗試過這個。它只會選擇具有ID和鏈接的行。我需要所有的行,但我需要替換鏈接字段中的圖像 – user933791 2014-09-01 07:57:35

+0

我添加了一個'UNION'來獲取其他行。 – Barmar 2014-09-01 08:00:27

2

您可以使用自聯接,以顯示圖像名稱的鏈接ID

select t.*,t1.Image as link_image 
from t 
left join t t1 on(t.link = t1.ID) 

Demo

-1

事情是這樣的:

(SELECT ID, Image from mytable WHERE link = '') 
UNION ALL 
(SELECT m1.ID as ID, m2.Image as Image 
    FROM mytable AS m1 INNER JOIN mytable AS m2 ON (m1.link=m2.ID) 
) 
+0

這實際上看起來像它會做我所需要的。你選擇的所有行沒有鏈接,然後加入行,所以我們得到的所有行,而不僅僅是那些關係 – user933791 2014-09-01 08:00:15

+1

@ user933791使用左連接..聯合會慢很多。 – 2014-09-01 08:02:44

+0

@JohnRuddell可能桌子太小,不能考慮速度。 「聯盟」解決了這個問題並保留了行的格式。 – 2014-09-01 13:33:42