我有一个MySQL数据库表映射多对多的关系。数据库表包含两列,这两列是来自其他表的外键。所以这个数据库表只能存在于从表B.从分配表A中的外键外键查找重复在很多关系
表
柱1的结构:conditionID(INT11)(外键) 列2:包标识(INT11)(外键)
CREATE TABLE `many_to_many_table` (
`conditionID` int(11) NOT NULL,
`packageID` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
ALTER TABLE `many_to_many_table`
ADD KEY `conditionID` (`conditionID`,`packageID`);
我想了解,如果在这个表中的组合存在。例如,用户具有ID 1,2和3的条件。通过这些ID,ID 1的包已经存在。条目是1 | 1,1 | 2和1 | 3.
的样本数据
INSERT INTO `many_to_many_table` (`conditionID`, `packageID`) VALUES
(1, 195), (2, 195), (3, 195), (4, 197), (5, 197), (5, 209), (6, 198), (6, 211), (6, 219), (6, 220);
有了这个样本数据的查询应该返回包标识195
我试过如下:
SELECT
packageID,
conditionID,
(
SELECT
COUNT(*)
FROM
many_to_many_table
WHERE
conditionID IN (1,2,3)
) AS rowCount
FROM
many_to_many_table
GROUP BY
packageID
HAVING
conditionID IN (1,2,3)
AND
rowCount = 3
这在运行良好第一时刻。但它选择仅具有条件ID 1或条件ID 2和不同packageID的条目。这个查询不足以获得重复。
这是可能的一个查询?
所以,你有conditionIDs的一个特定的顺序,你想知道是否存在所有这些conditionIDs配对包标识?这种packageID与一些不同的conditionID配对可能吗? –
是的。我想知道是否有包含所有这些条件ID的packageID。这是不可能的,那就是具有不同conditionID的packageID。 – Marcel
请参阅:[为什么我应该为我认为是非常简单的SQL查询提供一个MCVE?](https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve - 对于什么似乎对我来说是一个非常简单的SQL查询) – Strawberry