php - 我如何构造这种sql查询

标签 php mysql database

我有下面的数据库表 enter image description here

我想向带有 owner_id 的用户显示通知 1. 通知显示告诉所有者有两个用户(ID 为 17 和 2)用 post_id< 评论了他/她的帖子 1。 我尝试过以下查询,但它返回 2 行。我如何构建查询以返回一行,因为我希望一起返回一篇文章的通知?谢谢。

SELECT DISTINCT commenters_id, id, owner_id, 
                post_id, type, UNIX_TIMESTAMP(date_done) AS date 
FROM notification 
GROUP BY commenters_id 
HAVING owner_id = '$user_id' AND commenters_id != '$user_id' 
ORDER BY date_done DESC

最佳答案

此代码不会为您提供commenters_id,而是会统计每个帖子的回复人数。 日期将是某人最后一次回复该特定帖子的时间:

SELECT
    COUNT(DISTINCT commenters_id) AS commenter_count,
    owner_id,
    post_id,
    type,
    UNIX_TIMESTAMP(MAX(date_done)) AS date 
FROM notification
WHERE owner_id = '$user_id' AND commenters_id != '$user_id' 
GROUP BY owner_id, post_id, type
ORDER BY UNIX_TIMESTAMP(MAX(date_done)) DESC

关于php - 我如何构造这种sql查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10186974/

相关文章:

php - 关联数组键值对或Mysql别名效率更高

javascript - 如何使用 PHP ajax JQUERY 创建 3 个依赖下拉列表?

mysql - 嵌套选择查询语法不一致

php - 我怎样才能避免在 PHP 的 While 循环中使用 MySQL 查询

php - 什么被认为是 "best practice"用于设计一组服务 AJAX 请求的 PHP 脚本?

MySql:通过多个条件获取递增项目的计数

php - 阿拉伯语不存储在 mysql/php 中

php - MySQL:当日期计数超过给定数量时选择日期范围内的数据

php - 如何将此图像转换为文本框和按钮?

mysql - 我有 1 行受到影响,有 1 个警告,但我插入了正确的值