我正在为我正在处理的网络系统创建搜索。然而,搜索查询在查找我需要的数据方面非常简单(我不确定这是否可行)我想知道匹配的 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
语句。
任何想法都会受到赞赏。
谢谢,
亚当。
答案 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 ...