php - 需要在一个字段中搜索两个值Mysql

标签 php mysql sql wordpress

我需要在同一字段中搜索两个值。

╔════╦════════════╦══════════════╗
║ ID ║ Meta_key   ║ Meta_value   ║
╠════╬════════════╬══════════════╣
║  1 ║ first_name ║    pritesh   ║
║  2 ║ last_name  ║    mahajan   ║
║  3 ║ first_name ║    ritesh    ║
║  4 ║ last_name  ║    jain      ║
║  5 ║ first_name ║    john      ║
║  6 ║ last_name  ║    a         ║
║  7 ║ first_name ║    Mambo     ║
║  8 ║ last_name  ║    Nombo     ║
╚════╩════════════╩══════════════╝  

这是我的表格,我想搜索所有的名字和姓氏。以下是我的查询,但这不会返回我想要的内容。

SELECT * 
FROM `wp_usermeta` 
WHERE `meta_key` = 'last_name' 
  AND `meta_value` LIKE  '%mahajan%' 
  AND `meta_key` = 'first_name' 
  AND `meta_value` LIKE  '%a%'; 

最佳答案

给你

SQL Fiddle

查询:

SELECT first_name, last_name
FROM 
  (
    (
      SELECT meta_value AS first_name, id AS a_id 
      FROM wp_usermeta 
      WHERE meta_name = 'first_name'
    ) as a
  )
JOIN
  (
    (
      SELECT meta_value AS last_name, id AS b_id 
      FROM wp_usermeta 
      WHERE meta_name = 'last_name'
    ) as b
  )
WHERE a_id = b_id-1

<强> Results :

| FIRST_NAME | LAST_NAME |
|------------|-----------|
|    pritesh |   mahajan |
|     ritesh |      jain |
|       john |         a |
|      Mambo |     Nombo |

通过此功能,您可以使用两个虚拟列 first_namelast_name 轻松进行搜索。您只需向 WHERE 子句添加其他条件即可。像这样的东西:

  WHERE a_id = b_id-1
  AND first_name LIKE "%tesh%"
  AND last_name LIKE "%jai%"

将产生

| FIRST_NAME | LAST_NAME |
|------------|-----------|
|     ritesh |      jain |

注意

我在这里所做的一个重要假设(基于您的示例数据)是相关 first_namelast_name 总是会有连续的id。 (表中连续两条记录)。

关于php - 需要在一个字段中搜索两个值Mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20260825/

相关文章:

php - 无法在mysql中进行连接查询或我的表结构错误

PHP elasticsearch 部分匹配

php - 检查 Joomla! 3.4.0文章已经存在

MySQL 排序顺序 - 排序规则?

PHP Mysql计算日期时间之间的平均值并忽略平均值中的负结果

mysql - WAMP 服务器在 WIndows 10 上的安装问题

java - 通过java gui在mysql数据库上创建用户

c# - 如何最有效地在 SQL Server 中插入/更新几百万行?

mysql - 尽管查询有效,SQL 过程仍返回空表

php - 如何在从数据库中检索数据时隐藏重复数据