gpt4 book ai didi

mysql - 获取 2 个不同列中相同值匹配的所有行

转载 作者:太空宇宙 更新时间:2023-11-03 10:56:56 25 4
gpt4 key购买 nike

我有 2 个表,memberschat

我想获取所有与 $user_id 聊天的成员 ID,这里我们假设 $user_id = '5'

chat 表格如下:

id     from    to     message
1 32 12 test
2 25 18 new message
3 5 86 another message
4 53 5 final message

成员表:

id user_id
1 1
2 2
3 3
4 4
5 5

...

所以对于上面的表格内容,我的查询应该返回 5386 因为只有这些用户 ID 与 '5' 聊天

我的查询是:

$q = "
SELECT members.user_id
FROM members
LEFT JOIN chat ON chat.to = '5' OR chat.from = '5'
"

预期输出是:

user_id
86
53

但是它不起作用,我怎么能实现呢?谢谢

最佳答案

加入子句必须包含一个来自成员的字段和一个来自聊天的字段。但您可能更喜欢这种方式来编写您的查询:

$q = "
SELECT CASE chat.to WHEN 5 THEN chat.from ELSE chat.to END as the_other_guy
FROM chat
WHERE chat.from = 5 OR chat.to = 5";

编辑: 下次,请在您的问题中询问您真正需要什么,因为我们无法猜测您想要什么。 “显示与用户 5 交谈的成员的 ID 和用户名”比您的第一个标题“如何加入 2 表”更清楚

$q = "
SELECT CASE chat.to WHEN 5 THEN chat.from ELSE chat.to END as the_other_guy, username
FROM chat, members
WHERE
(chat.from = 5 AND members.id=chat.to)
OR (chat.to = 5 AND members.id=chat.from)";

关于mysql - 获取 2 个不同列中相同值匹配的所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19740492/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com