确定哪些列符合搜索条件

时间:2014-07-15 08:50:51

标签: mysql

我正在为我正在处理的网络系统创建搜索。然而,搜索查询在查找我需要的数据方面非常简单(我不确定这是否可行)我想知道匹配的 where

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语句。

任何想法都会受到赞赏。

谢谢,

亚当。

1 个答案:

答案 0 :(得分:1)

你想要一个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 ...