gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 12:50:49 24 4
gpt4 key购买 nike

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

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com