gpt4 book ai didi

mysql - 检索两个 id 引用的一个 id

转载 作者:行者123 更新时间:2023-11-29 08:20:17 24 4
gpt4 key购买 nike

我遇到了以下问题:

表的 SQL 查询:

CREATE TABLE IF NOT EXISTS `thread_users` (
`thread_id` bigint(20) unsigned NOT NULL,
`user_id` bigint(20) unsigned NOT NULL,
PRIMARY KEY (`thread_id`,`user_id`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

假设我有这些数据:

INSERT INTO `thread_users` (`thread_id`, `user_id`) VALUES
(1, 1),
(1, 2),
(2, 1),
(2, 2),
(2, 3),
(3, 1),
(3, 4);

我需要检索仅由 2 个 id 引用的 thread_id:X 和 Y(均已知)。通过上述数据,我希望能够检索仅存在 user_id = 1 和 user_id = 2 的 thread_id。

我对这张表的了解:

  • 如果一个线程仅由 2 个用户组成,则不存在仅包含这两个 id 的其他线程。 (插入前在mysql外部检查)

  • 用户不能在一个线程中出现多次。 (主键)

我想解决这个问题:

  • 求和 (user_id 1 + user_id 2) 搜索等于该结果 + (user_id = X OR user_id = Y) 的 SUM。但我无法正确编写此查询,并且我还需要检查该线程中 user_id 的数量...

  • 显然:在线程上的 user_id 数量等于 2 且 user_id 等于 X 和 Y 的情况下搜索 id。

感谢各位的帮助!

最佳答案

SELECT tu1.thread_id
FROM thread_users AS tu1
INNER JOIN thread_users AS tu2
ON tu1.thread_id = tu2.thread_id
AND tu1.user_id <> tu2.user_id
LEFT OUTER JOIN thread_users AS tu3
ON tu1.thread_id = tu3.thread_id
AND tu1.user_id <> tu3.user_id
AND tu2.user_id <> tu3.user_id
WHERE tu1.user_id = 1
AND tu2.user_id = 2
AND tu3.user_id IS NULL

关于mysql - 检索两个 id 引用的一个 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19612022/

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