我有两张 table
人物和图像
餐 table 上的人
+----+--------+----------+
| id | name | lastname |
+----+--------+----------+
| 1 | Jhon | Smith |
| 2 | George | Mutt |
| 3 | Peter | Law |
+----+--------+----------+
表格图片
+----+-----------+------------+
| id | id_people | img |
+----+-----------+------------+
| 1 | 1 | demo04.jpg |
| 2 | 2 | test1.jpg |
| 3 | 2 | orange.jpg |
| 4 | 2 | flow.png |
| 5 | 3 | darth.png |
| 6 | 3 | green.png |
+----+-----------+------------+
我需要让所有人随机获得一张图片。
比如好结果吧。
+----------------------------+
1 | Jhon | Smith | demo04.jpg
2 | George | Mutt | orange.jpg
3 | Peter | Law | green.png
+----------------------------+
或者其他结果。
+----------------------------+
1 | Jhon | Smith | demo04.jpg
2 | George | Mutt | test1.jpg
3 | Peter | Law | darth.png
+----------------------------+
I used this sql query
SELECT *
FROM `people` p
INNER JOIN (SELECT *
FROM images
ORDER BY Rand()
LIMIT 1)i
ON i.id_people = p.id
WHERE 1
但只返回一行。
+----+--------+----------+----+-----------+------------+
| id | name | lastname | id | id_people | img |
+----+--------+----------+----+-----------+------------+
| 2 | George | Mutt | 3 | 2 | orange.jpg |
+----+--------+----------+----+-----------+------------+
什么错误?
最佳答案
在这种情况下使用相关子查询而不是 join
:
SELECT p.*,
(select i.img
from images i
where i.id_people = p.id
order by rand()
limit 1
) as img
FROM `people` p ;
关于mysql - 使用mysql中的其他表获取随机图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28646257/