1

表 A
结果选择
A a
B a
B b
C a
C b
C c

表 B

用户选择

1 a
1 b
2 b
2 c

表 C
用户结果
1 B
2 C


如果我想这样做,我应该使用什么 mysql 查询:

如果用户选择 a 结果是 ABC(因为 ABC 在“选择”列中有“a”)如果用户选择 ab 结果是 BC(因为 A 在“选择”列中没有“b”)如果用户选择 abc结果是C(因为C在'select'列中有'ab c')如果用户选择bc结果是C(因为AB在'select'列中没有'c')如果用户选择c结果是C(因为 AB 在“选择”列中没有“c”)

所以它会从用户选择的内容中选择最相似的记录,并忽略其他不匹配的记录..对不起我的英语,我说的是国语...

4

1 回答 1

0
SELECT  `result`
FROM tableA
WHERE   `select` IN ('a','b','c')
GROUP BY result
HAVING COUNT(*) = 3

select如果没有对每个强制执行唯一约束resultDISTINCT则需要 a。

SELECT  `result`
FROM tableA
WHERE   `select` IN ('a','b','c')
GROUP BY result
HAVING COUNT(DISTINCT `select`) = 3
于 2012-12-18T15:39:55.933 回答