繁体   English   中英

mysql将选择值中每行的行值作为列名的串联字符串(仅按查询)

[英]mysql concatenated string with row value as column name for every row in select query (only by query)

下面是我的表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'

我预计结果将来自第二行第二列。 但是我什么也没得到。 我提到了许多指导使用GROUP_CONCAT的解决方案,但没有任何效果。 使用mysql可以做到这一点吗?

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

最后要实际执行该语句,只需使用“ EXEC” +语句。 即:EXEC(@str)

我不得不创建另一个答案,因为该论坛不允许我在评论中使用@(&s)。

    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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM