对于一栏来说,这很简单:
SELECT myColumn as 'My super sweet column', yourColumn FROM myTable;
# Results in:
# +-----------------------+------------+
# | My super sweet column | yourColumn |
# +-----------------------+------------+
# | 1 | 0 |
# +-----------------------+------------+
我将如何实现......?
SELECT * as 'Random_'* FROM myTable;
# To result in:
# +-----------------+-------------------+
# | Random_myColumn | Random_yourColumn |
# +-----------------+-------------------+
# | 1 | 0 |
# +-----------------+-------------------+
答案 0 :(得分:2)
没有合理的方法可以做你想做的事。您必须列出所有列名及其别名。
答案 1 :(得分:1)
运行以下命令:
show columns from yourTable;
此查询的结果集的每一行代表一列,此结果集的第一列是列名。知道了这一点,您可以按顺序处理表的列并获取表的列的名称。使用表格列的名称,您可以生成查询。
如果要为所有运行的表生成此类查询
show tables;
并从yourTable命令处理运行show列的每个表(用表名替换yourTable)。
答案 2 :(得分:0)
您可以使用information schema tables创建一个手动重命名每列的查询:
SELECT CONCAT('SELECT ', GROUP_CONCAT(
'`', REPLACE('`', '``', COLUMN_NAME), '` AS
`Random_', REPLACE('`', '``', COLUMN_NAME), '`'
), ' FROM myTable') INTO @qry
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'myDB' AND TABLE_NAME = 'myTable';
此时,@qry
包含字符串(为了便于阅读,我添加了空格除外):
SELECT `myColumn` AS `Random_myColumn`,
`yourColumn` AS `Random_yourColumn`
FROM myTable
然后可以执行prepared:
PREPARE stmt FROM @qry;
执行时:
EXECUTE stmt;
最后解除分配:
DEALLOCATE PREPARE stmt;
但是,您正在尝试执行此操作建议您的应用程序不知道myTable
的架构(即它是动态的)。这是通常不良做法,可能表示您需要normalise您的数据结构。
此外,我不太明白为什么结果集中列的名称对您很重要,因为您的应用程序可以引用它们,但它希望如何?