MYSQL:您能否提取匹配 4 个表达式中的 3 个的结果?

标签 mysql

假设我有这样的查询:

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/

相关文章:

MySQL 查询在 Linux 上不工作

mysql - 有没有办法优化在每一行上运行函数的 MySQL 查询?

mysql - 我应该如何存储另一个表的行以便在前端获得统计数据?

javascript - Ajax获取内容后,我想调用另一个ajax函数

mysql - "Random"SQL 错误 - 常规 1030,来自存储引擎的 -1

MySQL ELSE 返回十进制零而不是普通零

MySql - 仅按特定值的列分组(不带 UNION)

php - 具有第二个表 id 的 3 列的 Sql 表

MySQL 从日期不同的 3 个表中选择

mysql - 添加用户并在 1 个查询中从数据库中选择该用户 ID