Php MySQL,根据列值从不同的行中选择

Php MySQL,根据列值从不同的行中选择,php,mysql,sql,Php,Mysql,Sql,我有下表 --------------------------- |ID |Image | link | |01 | | 02 | |02 |steve.jpg | | |03 |eric.jpg | | ---------------------------- link字段存储id,因此我可以设置两行之间的关系 ID 01的链接字段设置为02。所以我希望ID01

我有下表

---------------------------
|ID  |Image      | link    |
|01  |           | 02      |  
|02  |steve.jpg  |         |         
|03  |eric.jpg   |         |         
----------------------------
link字段存储id,因此我可以设置两行之间的关系

ID 01的链接字段设置为02。所以我希望ID01使用在该字段中设置了ID的图像,因此它将是steve.jpg


如何获取所有行,以便设置了链接字段的行以该图像结束?

您可以使用自连接来显示链接id的图像名称

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
select t.*,t1.Image as link_image
from t 
left join t t1 on(t.link = t1.ID)

类似这样的内容:

(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 )
)

多么奇怪的模式啊。为什么将链接和图像放在同一个表中?这是一个非常好的自毁模式:)您应该将链接放在另一个表中。。为什么在同一张表中?请告诉我们您的预期结果。我已经试过了。它将只选择具有ID和链接的行。我需要所有的行,但我需要用链接字段中的图像替换图像。我添加了一个
联合
,以获取其他行。这实际上看起来也能满足我的需要。您将选择所有不带链接的行,然后合并这些行,这样我们就可以得到所有行,而不仅仅是带链接的行relationship@user933791使用左连接。。联盟会慢得多。@JohnRuddell也许桌子太小,不能考虑速度。“Union”解决了ussie问题并保留了行的格式。@MichaelLivach和左连接不保留格式?你看过mkhalid的答案了吗?发布的演示显示,它将从表中提取所有内容,然后添加图像名称(如果有)。。“代码要简洁得多。”约翰鲁德尔是的,我看了看。在mkhalid的解决方案中,您得到了两列(“Image”和“link_Image”),而不是一列