使用mysql中的其他表获取随机图像
我有两张桌子 人物与形象 餐桌上的人使用mysql中的其他表获取随机图像,mysql,Mysql,我有两张桌子 人物与形象 餐桌上的人 +----+--------+----------+ | id | name | lastname | +----+--------+----------+ | 1 | Jhon | Smith | | 2 | George | Mutt | | 3 | Peter | Law | +----+--------+----------+ 表格图像 +----+-----------+------------+ | id
+----+--------+----------+
| 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 |
+----+--------+----------+----+-----------+------------+
错误是什么?在这种情况下,使用相关子查询而不是
连接:
SELECT p.*,
(select i.img
from images i
where i.id_people = p.id
order by rand()
limit 1
) as img
FROM `people` p ;
你想让这三个人都有不同的形象吗?如果是这样,我认为选择的答案是有缺陷的。