mysql - 获取用户的 SQL 查询

标签 mysql sql

您好,我有一个名为 usersuser_details 的表,我的 user_details 表有问题。

用户表

usr_id   |姓名
1            |约翰
2            |玛丽
3            |雅各布

user_details表

det_id    | usr_id |看过
1             | 1          | 0
2             | 2          | 1
3             | 3          | 0
3             | 3          | 0

这是我的 SQL 查询

$sql = "SELECT *, COUNT(seen) 
    FROM user_details 
    GROUP BY usr_id 
    HAVING COUNT(seen)=0"; 

$sqlUnseen = mysqli_query($DB, $sql);

$result = mysqli_num_rows ($sqlUnseen);

echo $result;

我想获取表中未见过的登录用户数(0) 例如,我以用户 3 身份登录,则输出应为 2,因为 user_details 表中的用户 3 具有 <强>2零。

谢谢大家。

*我的输出是 1 1

最佳答案

这是应该有效的 SQL 语句。此外,在您的代码中,您只显示返回的行数,这不是您想要的。您需要 count(*) 列的值。这还会在表中显示查询的结果行:

$sql = "SELECT a.*, 
    COUNT(seen) as cnt
    FROM users a
    JOIN user_details b
        ON a.usr_id = b.usr_id
    WHERE a.usr_id = 3
    GROUP BY a.usr_id 
    HAVING cnt = 0"; 

$sqlUnseen = mysqli_query($DB, $sql);
$allrows = mysqli_fetch_all($sqlUnseen,MYSQLI_ASSOC);
$numrows = mysqli_num_rows ($sqlUnseen);

echo "<p>Number of rows returned: ".$numrows."</p>\n";
if($allrows) {
    echo "<table>\n";
    echo "<tr>\n";
    foreach($allrows[0] as $colname => $colval) {
        echo "<td>".$colname."</td>\n";
    }
    echo "</tr>\n";
    foreach($allrows as $recno => $row) {
        echo "<tr>\n";
        foreach($row as $colname => $colval) {
            echo "<td>".$colval."</td>\n";
        }
        echo "</tr>\n";
    }
    echo "</table>\n";
}

关于mysql - 获取用户的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49478935/

相关文章:

mysql - 在创建表本身时使用 Date_add() 或 add_time() 函数

mysql - 选择使用时间戳作为标准

sql - 在 SQL Create 语句中添加命名外键约束

sql - 如何查询 Postgres `RECORD` 数据类型

mysql - 按类别中项目的下载次数对类别进行排序

mysql - 为什么我找不到 my.cnf?

php - 获得完整的结果

MYSQL View ?连接两个表

c# - SQL 不通过 EF 保存 DateTime 的时间

sql - 使用 SQL 查找 Access 中的上一个和下一个值