当我在PHP中评估我的MySQL SELECT JOIN结果时,我使用表名来构建嵌套数组。但是,当使用AS计算列时,我似乎无法按预期设置表名(为了简化,我在这个例子中没有JOIN尝试,但问题是相同的):
SELECT `field1`, `field2`, "Test" AS `Table`.`field3` FROM `Test`;
这会引发错误。
如何在SQL中指出我想将field3与哪个表关联?
(导致$pdoStatement->getColumnMeta()
中的表名为“表”)
答案 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)
选择field1
,field2
,'测试'AS field3
FROM Test
; //替换为简单引用'