我遇到了以下问题:
表的 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。
谢谢你们的帮助!