带有连接字符串的列的mysql SELECT

时间:2016-01-21 17:31:02

标签: mysql

我从名为“9 stars”的列中选择了一些东西(没有“”)。

SELECT `9 stars` FROM `table` WHERE ... 

工作正常,但我必须找到一个解决方案来完成将变量(i = 9)"stars"相结合的工作,例如:

i = 9;  
SELECT `i stars` FROM `table` WHERE ...  (which does not work like this, of course).

4 个答案:

答案 0 :(得分:4)

如果您想在纯Sql中执行此操作,那么对于动态列名称,您需要使用 prepare statement

SET @i =9;
SET @table = <tblname>;
SET @query = CONCAT('SELECT ',CONCAT('`',@i,' ', 'start','`'),' FROM ', @table);

PREPARE stmt FROM @query;
EXECUTE stmt;

检查这个

Dynamic conversion of string into column name. MySQL

答案 1 :(得分:3)

如果您不想动摇构建查询并知道有多少&#34;我&#34;有价值,你可以这样做:

SET @i = whatever;
SELECT CASE @i 
   WHEN 1 THEN `1 stars`
   WHEN 2 THEN `2 stars`
   WHEN 3 THEN `3 stars`
   WHEN 4 THEN `4 stars`
   WHEN 5 THEN `5 stars`
   WHEN 6 THEN `6 stars`
   etc....
   ELSE NULL
END AS `the_stars`
FROM table
WHERE ...

您还可以使用行中其他字段的值而不是会话变量(@i)

答案 2 :(得分:1)

使用 CONCAT

SET @i = 9;
SELECT CONCAT(@i,  'stars') 
FROM table WHERE ... 

答案 3 :(得分:0)

你可以在 MySQL 中使用 ELT 函数:

SET @i = 3;
SELECT ELT(@i, `1 stars`, `2 stars`, `3 stars`, `4 stars`[, ...]) FROM `table` WHERE [...];