用户输入 1 到 6 个字(特征),因此所有输入数据为 6 个字。这是我的桌子:
----------------
| USER | WORD |
----------------
1 | Green
1 | Black
1 | Red
2 | Green
2 | Gray
例如,数组由 2 个单词组成:“Green”、“Black”。如果其特征中的连词数量最大,我如何接收“User=1”。我已经尝试过这个查询:
// $pat - array of words
// $nums - minimal amount of conjunctions.
$nums = 0.8*count($pat)
SELECT user
FROM words
WHERE word IN ('{$pat[0]}', '{$pat[1]}','{$pat[2]}','{$pat[3]}','{$pat[4]}','{$pat[5]}')
GROUP BY `user`
HAVING count(*) >= ".$nums."
ORDER BY count(*) DESC
LIMIT 1
问题是条件HAVING count(*) >= ".$nums."
不能正常工作,即使只有一个合取也会提取数据。