6

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

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

这会引发错误。

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

(导致表名$pdoStatement->getColumnMeta()是“表”)

4

2 回答 2

11

要将字符串文字声明为输出列,请保留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.

于 2012-08-26T18:03:42.933 回答
1

SELECT field1, field2, 'Test' AS field3FROM Test; // 替换为简单的引号 '

于 2012-08-26T18:04:33.817 回答