我有一个查询,用户可以使用 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']
方法,我知道如何输入这个值。这个查询让我有点困惑。
快照结果:
此外,如果这是重复的问题,请提前道歉,但我想不出在 MySQL 查询中调用此方法的原因,如果你能告诉我,我将不胜感激。
更新:
目前我可以使用 CASE WHEN votes.user_id = 'USERID' THEN value END AS userVote
正确获取值 感谢一个答案,但是当有两个值时它不会返回用户值但是 null
。
更新截图:
最佳答案
你想要条件聚合:
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/