mysql 将select输出与where子句语句匹配

jv4diomz  于 2023-04-10  发布在  Mysql
关注(0)|答案(1)|浏览(163)

我有以下查询模板

SELECT id 
FROM offers 
WHERE description LIKE "%X1%" 
OR description LIKE "%X2%" 
OR ... description LIKE "%X999%"

where子句是基于以下对象模板通过for循环构造的

[
{index: 0, values: ["X1", "X2", "X3"]},
{index: 1, values: ["X4", "X5"]},
.
.
.
{index: N, values: ["X997", "X998", "X999"]}
]

此数组中的不同对象可以共享公共X值。
基本上,我找到了offers表中与这个数组中的值匹配的所有行。但是,我不知道如何将sql查询的输出Map到请求对象的索引值。
有没有一种方法可以在select部分回显where子句中使用的值?如果我可以在where子句中插入索引作为虚拟值,并以某种方式在select部分输出它......我将感谢您在这方面的指导。
非常感谢

chhkpiq4

chhkpiq41#

您可以在SELECT子句中使用CASE语句来返回索引沿着每个匹配行的id:
试试下面的方法,看看是否有效,例如:

SELECT id,
  CASE
    WHEN description LIKE '%X1%' THEN 0
    WHEN description LIKE '%X2%' THEN 0
    WHEN description LIKE '%X3%' THEN 0
    WHEN description LIKE '%X4%' THEN 1
    WHEN description LIKE '%X5%' THEN 1
    -- Add more cases here...
    ELSE -1
  END as `index`
FROM offers
WHERE description LIKE '%X1%'
OR description LIKE '%X2%'
OR description LIKE '%X3%'
OR description LIKE '%X4%'
OR description LIKE '%X5%'
-- Add more conditions here...

相关问题