检查多个列的单个值并仅返回单个值

Checking multiple columns for single value and returning only the single value

我想在 3 列中搜索单个值,并且 return 每次出现该值。 我的查询基于以下关于类似请求的 answer

SELECT * 
FROM table 
WHERE 'abc' IN (column1, column2, column3)

但是,我不想 return 整行,只想要单个值。有可能在同一行的多个列中找到该值。每次出现都应 returned,最终结果应为一维列表。我需要如何更改我的查询?

您希望在每一行中返回的值与您搜索的值相同,因此可以使用如下语句:

SELECT 'abc' AS column_name 
FROM table 
WHERE 'abc' IN (column1, column2, column3) 

如果您希望 'abc' 在 3 列中的任何一列中每次出现都返回一次,您应该使用 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'