gpt4 book ai didi

php - MySQL如何通过JOIN抓取更多信息?

转载 作者:行者123 更新时间:2023-11-29 08:50:32 25 4
gpt4 key购买 nike

目前,我有两个 MySQL 表。

第一个表存储 friend 和他的照片之间的关系。

表 1

 id  |  pic_id  |  friend_id
----------------------------
0 | 123 | 84589
1 | 290 | 11390
2 | 884 | 84589
3 | 456 | 84589
4 | 123 | 11111
5 | 456 | 22222

表 2

第二个表存储有关图片的更多信息...

id   |  pic_id  |  title   |  color  |  detail
----------------------------------------------
0 | 123 | hello | black | brush
1 | 124 | world | red | paint
2 | 884 | sample | green | star

我使用 JOIN 来获取我需要的信息...

但是,如果我想使用上述 SQL 匹配的 pic_id 并查找具有相同 pic_id 的其他friend_id,该怎么办?

例如,上面的 SQL 命令将为我提供第 0、2 和 3 行,其中 pic_id 为 123、884、456。我应该使用什么 SQL 命令来循环这些 pic_id 并获取关联的friend_id?我希望 pic_id 123 的结果为 11111,pic_id 456 的结果为 22222。

我使用以下代码来完成上述任务。它看起来效率不高,而且速度很慢。

$sql = "SELECT b.title, b.color, b.detail
FROM table1 a INNER JOIN table2 b
on a.pic_id = b.pic_id
WHERE friend_id = 84589";

$res = mysqli_query($link,$sql);
if($res){
while ($rec = mysqli_fetch_assoc($res)){
$pic_id.=$rec['pic_id'].",";
$arr[] = $rec;
}
}

$each_id = explode(',',$pic_id);
foreach($each_id as $key => $value){
if ($value){
$next_sql = "SELECT friend_id FROM table1 WHERE pic_id=".$value;
$next_res = mysqli_query($link,$next_sql);

if ($next_res){
while($next_rec = mysqli_fetch_assoc($next_res)){
//do things
}
}
}
}

如果不清楚,抱歉。请告诉我,我会澄清。

非常感谢所有帮助!

最佳答案

试试这个(更新):

SELECT a.friend_id, a.pic_id
FROM table1 a
WHERE EXISTS (SELECT 1 FROM table1 t
WHERE t.pic_id = a.pic_id AND t.friend_id = 84589)

检查这个 - http://sqlfiddle.com/#!3/91cdf/3

关于php - MySQL如何通过JOIN抓取更多信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11371871/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com