假设我有这样的查询:
SELECT * FROM my_table WHERE name = "john doe" AND phone = "8183321234" AND email = "johndoe@yahoo.com" AND address = "330 some lane";
但是假设我只需要 4 个中的 3 个匹配,我知道我可以用多个 OR 编写一个很长的查询,但我想知道是否有这个功能?
谢谢。
最佳答案
SELECT
*
FROM
my_table
WHERE
CASE WHEN name = "john doe" THEN 1 ELSE 0 END +
CASE WHEN phone = "8183321234" THEN 1 ELSE 0 END +
CASE WHEN email = "johndoe@yahoo.com" THEN 1 ELSE 0 END +
CASE WHEN address = "330 some lane" THEN 1 ELSE 0 END
>= 3;
旁注:这很可能不会有效地使用索引。另一方面,无论如何,这些列很可能没有索引。
关于MYSQL:您能否提取匹配 4 个表达式中的 3 个的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/761014/