Mysql SQL:编写一个给定varchar的查询,查找它是否存在于列a或列B中

Mysql SQL:编写一个给定varchar的查询,查找它是否存在于列a或列B中,mysql,Mysql,假设我有一个有两列的表,a和B CREATE table test( A VARCHAR(20) B VARCHAR(20) ); INSERT into A VALUES ('cat'), ('dog'),('cow'), ('horse') INSERT into A VALUES ('chicken'), ('steve'),('fish'), ('eel') 我想写一个查询,其中给定一个varchar,它将返回它存在的列名(如果两者都不存在,则返回一个空的var

假设我有一个有两列的表,a和B

CREATE table test(
    A VARCHAR(20)
    B VARCHAR(20)
);

INSERT into A 
VALUES
('cat'), ('dog'),('cow'), ('horse')

INSERT into A 
VALUES
('chicken'), ('steve'),('fish'), ('eel')
我想写一个查询,其中给定一个varchar,它将返回它存在的列名(如果两者都不存在,则返回一个空的varchar)。A和B没有任何相同的VARCHAR。我是mySql的新手

find('cat')返回'A'

find('eel')返回'B'

查找('goat')返回“”

试试这个

SELECT 
CASE WHEN A='input' THEN 'A' 
     WHEN B='input' THEN 'B' 
     ELSE '' END AS 'ColumnName' 
FROM test WHERE A = 'yourString' OR B = 'yourString'
试试这个

SELECT 
CASE WHEN A='input' THEN 'A' 
     WHEN B='input' THEN 'B' 
     ELSE '' END AS 'ColumnName' 
FROM test WHERE A = 'yourString' OR B = 'yourString'
简单的案例应该:

select 
   case when A='input' then 'A' 
        when B='input' then 'B' 
        else 'None' end as 'ColumnName' 
 from Table
简单的案例应该:

select 
   case when A='input' then 'A' 
        when B='input' then 'B' 
        else 'None' end as 'ColumnName' 
 from Table

使用
WHERE
筛选到包含变量的行。然后是逻辑的
CASE
语句

SELECT
   CASE 
    WHEN A = [your varchar] THEN 'A'
    WHEN B = [your varchar] THEN 'B'
    END
FROM test
WHERE A = [your varchar] OR B = [your varchar]

注意:如果变量不存在,则不会返回任何行。如果变量多次出现,它将为每次出现返回一行。最后,如果在这两列中都找到,则此查询将只返回“A”,因为
CASE
语句是按写入顺序检查的。

使用
WHERE
筛选到包含变量的行。然后是逻辑的
CASE
语句

SELECT
   CASE 
    WHEN A = [your varchar] THEN 'A'
    WHEN B = [your varchar] THEN 'B'
    END
FROM test
WHERE A = [your varchar] OR B = [your varchar]

注意:如果变量不存在,则不会返回任何行。如果变量多次出现,它将为每次出现返回一行。最后,如果在这两列中都找到了,那么这个查询将只返回“A”,因为
CASE
语句是按写入顺序检查的

SET @c = 'Z';
SELECT 
    IfNull((SELECT 'A' FROM Test WHERE A = @c LIMIT 1), '')
    + 
    IfNull((SELECT 'B' FROM Test WHERE B = @c LIMIT 1), '')

这样你只会得到一行,它将是'A','B','AB'(如果两者都有),''(如果没有)

我会这样做

SET @c = 'Z';
SELECT 
    IfNull((SELECT 'A' FROM Test WHERE A = @c LIMIT 1), '')
    + 
    IfNull((SELECT 'B' FROM Test WHERE B = @c LIMIT 1), '')

这样,您只会得到一行,它将是“A”、“B”、“AB”(如果两者都有),”(如果没有)

更新您的问题添加真实的数据样本,并获得预期的结果请问您是否有迄今为止尝试过的sql?更新您的问题添加真实的数据样本,并获得预期的结果请问您是否有迄今为止尝试过的sql?