gpt4 book ai didi

mysql - 返回 id,其中两个字段之一匹配一个值,但仅返回该值以外的字段

转载 作者:行者123 更新时间:2023-11-29 02:27:48 30 4
gpt4 key购买 nike

我有一个消息表,其中包含给定消息的 to_idfrom_id

我想将一个 user_id 传递给此查询并让它返回一个非重复的 id 列表,代表任何向/从所提供的 user_id 发送消息的用户。

我现在拥有的是(使用 12 作为目标 user_id):

SELECT from_id, to_id

FROM messages

WHERE
from_id = 12
OR
to_id = 12

这确实会返回该 user_id 存在的所有记录,但我不确定如何让它只返回非重复项,并且只有一个字段不是 12 的 user_id。

简而言之,它将返回用户 12 拥有现有消息记录的任何用户的 ID。

我希望我已经解释得足够好,我不得不相信它相对简单,我还没有学会。

编辑:

我应该指定虽然我当前的 SQL 有两个字段,但我只想返回一个字段 --- contact_id。并且不应有重复项。

contact_id 不是消息表中的字段,但这是我希望查询返回的字段名称,无论它返回的是 from_id 还是 to_id

最佳答案

您可以使用 union :

select
from_id as contact_id
from messages
where to_id = 12
<b>union</b>
select
to_id
from messages
where from_id = 12

此外,来自 the documentation (强调我的):

The default behavior for UNION is that duplicate rows are removed from the result.

或者,您可以使用 if() (或 case ):

select distinct if(from_id = 12, to_id, from_id) as contact_idfrom messageswhere from_id = 12or to_id = 12

关于mysql - 返回 id,其中两个字段之一匹配一个值,但仅返回该值以外的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18410218/

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