我想在3列中搜索一个值,并返回该值的每次出现。我的问题是基于以下关于类似请求的回答。
SELECT *
FROM table
WHERE 'abc' IN (column1, column2, column3)
但是,我不想返回整行,只想返回单个值。该值可能在同一行的多个列中找到。每次出现都应该返回,最终结果应该是一个一维列表。我需要如何更改我的查询?
您希望在每行中返回的值与您搜索的值相同,因此这样的语句可以:
SELECT 'abc' AS column_name
FROM table
WHERE 'abc' IN (column1, column2, column3)
如果希望在3列中的任何一列中每次出现'abc'
都返回一次,则应使用UNION ALL:
SELECT column1 AS column_name
FROM table
WHERE column1 = 'abc'
UNION ALL
SELECT column2 AS column_name
FROM table
WHERE column2 = 'abc'
UNION ALL
SELECT column3 AS column_name
FROM table
WHERE column3 = 'abc'