gpt4 book ai didi

php - 获取匹配的列及其值 MySQL

转载 作者:行者123 更新时间:2023-11-29 07:59:01 26 4
gpt4 key购买 nike

这是我的查询:

SELECT ID, Name, Description
FROM MyTable
WHERE NAME LIKE :search OR Description LIKE '%search%'
OR Status LIKE '%search%'
OR ... Many Other Columns LIKE '%search%

当我获取数据时,我会将其显示给他们搜索的用户。现在我只显示ID、名称和描述。我还想显示哪一列与搜索字符串匹配。如果它与 Status 匹配,我想显示该行的状态,如果它与任何其他列匹配,我想显示它匹配的该列的值。

如果匹配多列也没关系。我只需要第一列。

如果不选择所有列然后对每一列运行 PHP 搜索来找出匹配的列,是否可以实现这一点?可以简单地在MySQL中完成吗?

我想让它尽可能快,因为我添加到搜索中的列和表越多,我的搜索就会变得相当慢,并且不希望此功能增加大量开销。

最佳答案

考虑以下...

DROP TABLE IF EXISTS my_table;

CREATE TABLE my_table
(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, a INT NOT NULL, b INT NOT NULL, c INT NOT NULL);

INSERT INTO my_table (a,b,c) VALUES
(101,102,103),
(102,103,104),
(103,104,105),
(104,105,106),
(105,106,107);

SELECT * FROM my_table;
+----+-----+-----+-----+
| id | a | b | c |
+----+-----+-----+-----+
| 1 | 101 | 102 | 103 |
| 2 | 102 | 103 | 104 |
| 3 | 103 | 104 | 105 |
| 4 | 104 | 105 | 106 |
| 5 | 105 | 106 | 107 |
+----+-----+-----+-----+

SELECT id
, CASE WHEN a LIKE '%04%' THEN 'a' WHEN b LIKE '%04%' THEN 'b' WHEN c LIKE '%04%' THEN 'c' END col
, CASE WHEN a LIKE '%04%' THEN a WHEN b LIKE '%04%' THEN b WHEN c LIKE '%04%' THEN c END val
FROM my_table;
+----+------+------+
| id | col | val |
+----+------+------+
| 1 | NULL | NULL |
| 2 | c | 104 |
| 3 | b | 104 |
| 4 | a | 104 |
| 5 | NULL | NULL |
+----+------+------+

关于php - 获取匹配的列及其值 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24370706/

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