gpt4 book ai didi

mysql - 当您需要一对字段同时匹配时,如何执行类似 IN() 的操作?

转载 作者:行者123 更新时间:2023-11-29 03:09:27 25 4
gpt4 key购买 nike

我有一个网络(内部网)工具,可以将用户列表解析为名字和姓氏数组。然后我循环遍历该数组(可能是 50 次),例如:

SELECT * FROM users WHERE last_name = array[x].last AND first_name = array[x].first

是否有可能以某种方式同时查询所有这些名字/姓氏组合,就像具有两个属性的 IN 语句一样。

如果可能的话,我会喜欢一个单一的查询,它返回找到的每个匹配项的记录集(我想就像一个带有 2 个属性的 IN 语句)。我对 MySQL 不是很了解,但我猜这就像让一个子查询收集任何名字匹配的列表,然后另一个子查询收集任何姓氏匹配。

实际上你知道,如果我只是在那里进行查询 where first_name IN () OR last_name in () 我会得到一个包含任何可能匹配项的结果集,然后我可以遍历该结果集最后检查名字和姓氏的匹配位置。这个数据库很快,但它很大。比如有8000+用户

最佳答案

这是一个很好的 MySQL 技巧 row constructors :

CREATE TABLE users (
first VARCHAR(50),
last Varchar(50)
);

INSERT INTO users (first, last) VALUES
('Bill', 'Gates'), ('Steve', 'Jobs'), ('Jon', 'Skeet');

SELECT *
FROM users
WHERE (first, last) = ('Bill', 'Gates')
OR (first, last) = ('Steve', 'Jobs')
OR (first, last) = ('Jon', 'Skeet');

http://sqlfiddle.com/#!2/6ef9a/2

它也适用于 IN:

SELECT *
FROM users
WHERE (first, last) IN(
('Bill', 'Gates'), ('Steve', 'Jobs'), ('Jon', 'Skeet')
);

http://sqlfiddle.com/#!2/6ef9a/6

关于mysql - 当您需要一对字段同时匹配时,如何执行类似 IN() 的操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10611194/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com