Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 获取所有同名用户的姓氏_Mysql_Wordpress - Fatal编程技术网

Mysql 获取所有同名用户的姓氏

Mysql 获取所有同名用户的姓氏,mysql,wordpress,Mysql,Wordpress,我想从Wordpress usermeta表中接收一个对象,该对象包含所有同名用户的姓氏。给出了要搜索的第一个名称。 i、 John Miller、John Doe和John Appleseed是我Wordpress页面上的注册用户。我想得到一个对象,包括米勒,多伊和苹果 我尝试了以下查询,但由于限制1,它只返回一个姓氏 SELECT `meta_value` FROM `wp_usermeta` WHERE `user_id` = ( SELECT `user_id` FROM

我想从Wordpress usermeta表中接收一个对象,该对象包含所有同名用户的姓氏。给出了要搜索的第一个名称。
i、 John Miller、John Doe和John Appleseed是我Wordpress页面上的注册用户。我想得到一个对象,包括米勒,多伊和苹果

我尝试了以下查询,但由于限制1,它只返回一个姓氏

SELECT `meta_value`
FROM `wp_usermeta`
WHERE `user_id` = (
    SELECT `user_id`
    FROM `wp_usermeta`
    WHERE `meta_value` LIKE 'John' AND
          `meta_key` = 'first_name'
    LIMIT 1
) AND `meta_key` = 'last_name';

如何修改此查询以接收所有用户的姓氏?

将表连接到自身以将名字与姓氏关联,然后应用一个简单的等式
WHERE
子句:

SELECT
    f.user_id,
    f.meta_value AS first_name,
    l.meta_value AS last_name
FROM wp_usermeta f
INNER JOIN wp_usermeta l
    ON f.user_id = l.user_id AND
       f.meta_key = 'first_name' AND
       l.meta_key = 'last_name'
WHERE f.meta_value = 'John';
PostgreSQL中的示例执行(但查询也应在MySQL中工作):


只需将
where user\u id=(…
更改为
where user\u id in(…
并删除
限制1

SELECT `meta_value`
FROM `wp_usermeta`
WHERE `user_id` in (
    SELECT `user_id`
    FROM `wp_usermeta`
    WHERE `meta_value` LIKE 'John' AND
          `meta_key` = 'first_name' 
) AND `meta_key` = 'last_name';

只需将
where user\u id=(…
更改为
where user\u id in(…
并删除
限制1
。这很有效-非常感谢!我强烈建议将此查询的
EXPLAIN
输出与我的答案中的输出进行比较;根据您使用的MySQL版本,一个查询可能比另一个查询执行得更好。@cdhowie-有两种方法可以编写查询。我只是提供了一种对原始查询进行最少的修改,其中显示了解释计划。让我们假设表非常大…这将花费更长的时间?连接还是子查询?像
这样的
肯定会增加一些时间。之后,我的查询速度会更快,因为此查询有一个依赖子查询,而m但是,对于小数据集,这两种方法都应该表现得足够好。
SELECT `meta_value`
FROM `wp_usermeta`
WHERE `user_id` in (
    SELECT `user_id`
    FROM `wp_usermeta`
    WHERE `meta_value` LIKE 'John' AND
          `meta_key` = 'first_name' 
) AND `meta_key` = 'last_name';