[英]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.