我需要在同一字段中搜索两个值。
╔════╦════════════╦══════════════╗
║ 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%';
最佳答案
给你
查询:
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_name
和 last_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_name
和 last_name
总是会有连续的id
。 (表中连续两条记录)。
关于php - 需要在一个字段中搜索两个值Mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20260825/