我有一个表PICTURES
:
username varchar(50)
picture_id varchar(50)
datetime
...我有一张 table FRIENDS
:
user_1 varchar(50)
user_2 varchar(50)
datetime
当您在网站上有 friend 时,您的用户名将输入 user_1
,而您 friend 的用户名将输入 user_2
。对于每个新 friend ,一个新行...
我想显示一个用户(user_1)的 friend 的最后 5 张图片
所以我试试
SELECT p.picture_id, p.datetime
FROM pictures AS p
WHERE p.username = (
SELECT f.user_2
FROM friends AS f
WHERE f.user_1 = '(ENTER USERNAME HERE)'
ORDER BY f.datetime DESC
LIMIT 5
)
ORDER BY p.datetime DESC;
如您所见,子查询返回不止一行,所以...我需要您的帮助或建议来帮助我管理这个解决方案!
最佳答案
尝试在 WHERE p.username = (
中使用 IN
而不是 =
。因为您最多选择 5 行 =
不太合理。
SELECT p.picture_id, p.datetime
FROM pictures AS p
WHERE p.username IN (
SELECT f.user_2
FROM friends AS f
WHERE f.user_1 = '(ENTER USERNAME HERE)'
ORDER BY f.datetime DESC
LIMIT 5
)
ORDER BY p.datetime DESC;
关于php - Mysql 子查询失败,需要帮助 :),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2098487/