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”),而不是一列