在MySQL SELECT“AS”中使用表名

时间:2012-08-26 18:02:06

标签: mysql

当我在PHP中评估我的MySQL SELECT JOIN结果时,我使用表名来构建嵌套数组。但是,当使用AS计算列时,我似乎无法按预期设置表名(为了简化,我在这个例子中没有JOIN尝试,但问题是相同的):

SELECT `field1`, `field2`, "Test" AS `Table`.`field3` FROM `Test`;

这会引发错误。

如何在SQL中指出我想将field3与哪个表关联?

(导致$pdoStatement->getColumnMeta()中的表名为“表”)

2 个答案:

答案 0 :(得分:10)

要将字符串文字声明为输出列,请关闭Table并使用Test。它不需要与您的联接中的表关联,因为它只能通过其列别名访问。使用像getColumnMeta()这样的元数据函数时,表名将是一个空字符串,因为不是与表关联。

SELECT
  `field1`, 
  `field2`, 
  'Test' AS `field3` 
FROM `Test`;

注意:我使用上面的单引号。 MySQL通常配置为尊重字符串的双引号,但单引号在RDBMS中可以更广泛地移植。

如果必须具有带有文字值的表别名,则需要将其包装在与您要使用的表同名的子查询中:

SELECT
  field1,
  field2,
  field3
FROM 
  /* subquery wraps all fields to put the literal inside a table */
  (SELECT field1, field2, 'Test' AS field3 FROM Test) AS Test

现在field3将作为Test.field3输出。

答案 1 :(得分:0)

选择field1field2,'测试'AS field3 FROM Test; //替换为简单引用'