检查多个列中的单个值,然后只返回单个值



我想在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'

最新更新