php - Mysql 子查询失败,需要帮助 :)

标签 php sql mysql subquery greatest-n-per-group

我有一个表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/

相关文章:

php - 从数据库返回多于一行

mysql - 如何导入两个包都注册驱动程序mysql

mysql - 为什么我在 mysql 更新时收到 'invalid use of group function' 错误?

java mysql准备语句

MySQL 连接器和服务器兼容性(VERSION.server 文件)

php - 如何确保其他程序员不会在我的站点中放置后门和回调!

php - 谷歌地图使用 PHP 在 MySQL 中保存多边形和点

php - 我想使用 mysql 数据库的内容显示不同的页面

sql - 如何在 Azure Function 中使用 Microsoft.Data.SqlClient?

sql - 使用 CASE 语句更新 SELECT 查询