php - 如何有效地返回具有多组值匹配的 WHERE 条件的行?

标签 php mysql

我有一个包含以下列的表格:

id, name, surname

我有以下 sql 查询:

SELECT `id` from `table` WHERE name = 'John' AND surname = 'Smith';

因为我有一个名字和姓氏列表,我想检查它们是否出现在表中,我想进行一次查询并返回 ID(如果名字和姓氏都匹配)集合的姓氏)或空 ID(或零)以指示姓名和姓氏的组合不匹配。

所以我基本上是这样的:

SELECT `id` from `table` WHERE name = 'John' AND surname = 'Smith';
SELECT `id` from `table` WHERE name = 'Claudia' AND surname = 'Janssen';
SELECT `id` from `table` WHERE name = 'Eduart' AND surname = 'Allen';
SELECT `id` from `table` WHERE name = 'Don' AND surname = 'Diablo';
SELECT `id` from `table` WHERE name = 'Esther' AND surname = 'Smith';

(大量的查询)

我认为语句 IN 不起作用,因为如果在表中找到同名的人和另一个同姓的人,它也会返回一个 id。找到组合很重要。

我的问题是:如何高效地执行上述 5 个单一查询所规定的 mysql 查询?

最佳答案

这就是您要找的吗?

SELECT `id` 
FROM   `table` 
WHERE  (`name` = 'John' AND `surname` = 'Smith') 
        OR (`name` = 'Claudia' AND `surname` = 'Janssen') 
        OR (`name` = 'Eduart' AND `surname` = 'Allen') 
        OR (`name` = 'Don' AND `surname` = 'Diablo') 
        OR (`name` = 'Esther' AND `surname` = 'Smith');

关于php - 如何有效地返回具有多组值匹配的 WHERE 条件的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27290922/

相关文章:

php - 查询中的 UNION 语句

php - 如何使用 laravel 在 MySQL 中通过将两个列值合并为一列来更新列

php - 我可以在 PHP for 循环中使用 ON DUPLICATE UPDATE KEY

mysql - 产品表的 MyIsam VS INNODB

java - 使用我的 java 代码连接到 MySQL 数据库时遇到问题

javascript - 导航列表中的事件链接

php - 将 $id 从 Blade 传递到 Controller 方法显示 Laravel 4

php - 数据库到数据库通信

mysql - 计算所有列的平均值,然后输出差异

php - 如何回显数据库查询结果?