php - SELECT JOIN MySQL 查询中一列的唯一值

标签 php mysql sql

我有一个查询,用户可以使用 JOIN 从两个表中提取数据。但我希望结果中的一列特定于 user_id 或返回 null 如果它与 user_id 不匹配。

SQL:

SELECT 
        posts.id, 
        posts.deviceID, 
        posts.type, 
        posts.title,  
        posts.time, 
        SUM(value) AS votes,
        value AS userVote, <--- THIS NEED TO BE UNIQUE TO WHAT THE USER ID IS.          
        FROM posts 
        LEFT JOIN votes 
        on (posts.id = votes.post_id)
        GROUP BY posts.id

如您所见,有 value AS userVote 的 SELECT 语句。该函数提供了 user_id 与 php $_POST['user_id'] 方法,我知道如何输入这个值。这个查询让我有点困惑。

快照结果:

enter image description here

此外,如果这是重复的问题,请提前道歉,但我想不出在 MySQL 查询中调用此方法的原因,如果你能告诉我,我将不胜感激。

更新:

目前我可以使用 CASE WHEN votes.user_id = 'USERID' THEN value END AS userVote 正确获取值 感谢一个答案,但是当有两个值时它不会返回用户值但是 null

更新截图:

enter image description here

最佳答案

你想要条件聚合:

SELECT p.id, p.deviceID, p.type, p.title, p.time, 
       SUM(v.value) AS votes,
       MAX(CASE WHEN p.user_id = u.user_id THEN v.value END) as userVote
FROM posts p LEFT JOIN
     votes v
     on p.id = v.post_id
GROUP BY p.id;

注意:如果用户可以多次投票,您可能需要 SUM()GROUP_CONCAT(),具体取决于您希望看到的内容。

关于php - SELECT JOIN MySQL 查询中一列的唯一值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31899846/

相关文章:

javascript - Google Maps API Infowindow 在提交前将 lat 和 lng 值输入到表单隐藏字段中

java - 试图从带有 JSON 的 PHP 返回数据到 Android.....

php - 使用 POST 提交表单后数据未显示

java - 在连接之前检查数字是否已经在字段中?

php - 如何获得一个空的关联数组?

php - 此 MySQL 查询的语法可能有误

php - 在一个网页中生成多个学生报告表

php - 使用准备好的语句选择计数不起作用

sql - 如何在 rails 中添加条件 where 子句

mysql - 如何查找 block 传输数量并查找查询所需的操作