mysql连接字符串,其中行值为select name中每行的列名(仅限查询)

时间:2015-10-05 13:36:57

标签: mysql concatenation

下面是我的表TABLE

id   colname1   colname2     colname3
1    Alex       John         Mary
2    Alyssa     Eben         Stephen
3    Sandra     Tina         William

我尝试使用以下查询

SELECT * FROM TABLE WHERE CONCAT('colname',id) = 'Eben'

我预计结果将来自第2行第2列。但我一无所获。我提到了许多指导使用GROUP_CONCAT的解决方案,但我没有任何工作。 这可以用mysql做到吗?

2 个答案:

答案 0 :(得分:0)

您可以尝试使用动态sql。使用您的选择填充字符串变量,例如:   DECLARE @str varchar(50)=' SELECT * FROM TABLE WHERE colname @ id =''' +' Eben' +'''' 然后将占位符字符串(" @ id")替换为您想要的列号,例如:    选择REPLACE(@str,' @ id',2)

最后要实际执行语句,只需使用" EXEC" +声明。即:    执行(@str)

答案 1 :(得分:0)

我必须创建另一个答案,因为这个论坛不允许我在评论中使用@(&符号)。

    DECLARE @str varchar(50) = 'SELECT * FROM TABLE WHERE colname@id = ''' +    
    'EBEN' + '''' 
    select @str = REPLACE(@str, '@id', 2)
    select @str '@str'  --This is just to examine the code, get the results of     
     --this and run it to test
--you should get this: SELECT * FROM TABLE WHERE colname2 = 'EBEN'
EXEC (@str) --this will actually execute your code