检查多个列的单个值并仅返回单个值
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'
我想在 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'