mysql - 确定哪些列与搜索条件匹配

标签 mysql

我正在我正在开发的网络系统上创建搜索。就查找我需要的数据而言,搜索查询非常简单,但是(我不确定这是否可能)我想知道数据匹配的位置

SELECT o.*, c.`customer_name`
FROM `orders` o
    LEFT JOIN `customers` c ON (o.`customerID` = c.`customerID`) 
WHERE ((o.`orderID` like '%adam%') OR 
    (o.`order_ref` like '%adam%') OR 
    (c.`customer_name` like '%adam%') OR 
    (c.`address_line1` like '%adam%') OR 
    (c.`address_line2` like '%adam%') OR 
    (c.`town` like '%adam%') OR 
    (c.`city` like '%adam%') OR 
    (c.`postcode` like '%adam%'))

因此,在上面的查询中,客户名称可以匹配,但我如何知道查询中实际匹配的是哪一列?当然这是可能的,因为我确信 PhpMyAdmin 在匹配的条件周围添加了一个橙色框。

我花了相当多的时间进行搜索,但找不到解决方案,可能是因为我没有搜索正确的术语。我发现的最接近但仍然无法真正适应这种情况的方法是使用 CASE WHEN 语句。

任何想法将不胜感激。

谢谢

亚当。

最佳答案

您需要一个 CASE 表达式:

SELECT o.*, c.customer_name,
        CASE WHEN o.orderID LIKE '%adam%' THEN 'orderID'
             WHEN o.order_ref LIKE '%adam%' THEN 'order_ref'
             ...
             WHEN c.postcode LIKE '%adam%' THEN 'postcode'
        END AS which_column_matched
FROM ...

关于mysql - 确定哪些列与搜索条件匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24753776/

相关文章:

php - 不能将 PDOStatement 类型的对象用作数组

php - 将值和数组添加到 PDO 执行方法

php - 插入 ORM 自引用外键

PHP:帮助执行一系列查询

mysql - 如何从两个表中获取记录以及计数?

mysql - 如何编写包含多个 LIKE 子句的查询?

php - MySQL:选择一个月的数据分为多个时间段

MySQL,拆分列数据并通过拆分数据得到结果

mysql - MySQL 数据库中密码存储的 SHA-2?

java - JPA 在 MySQLIntegrityConstraintViolationException 中插入父/子结果