【问题标题】:MYSQL select * plus one column again [duplicate]MYSQL select * 再加一列[重复]
【发布时间】:2018-06-16 13:19:48
【问题描述】:

某些 SQL 工具集(如 PDO)可以根据选择的第一列执行特殊操作,例如将其作为类名进行实例化或将其用作哈希表的键。不幸的是,PDO 从结果中删除了该列。如果我仍然希望它成为结果的一部分怎么办?

我尝试过诸如

之类的查询
SELECT `class` as `myclass`, * FROM `mytable`

但我遇到了错误:

#1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 '* FROM mytable 附近使用正确的语法

我知道列名不能有冲突,因此

as `myclass`

以下工作正常:

SELECT `class` as `myclass`, `class` FROM `mytable`

如果不进行自连接或放置完整的列列表,这是否可能?

【问题讨论】:

  • 你试过 mytable.* 吗?这可能会解决您的错误。
  • 不要使用邪恶的SELECT *。我很想找到一个不删除列的工具集 - 但如果直接写出列名可以解决问题,那么这似乎是一种合理的方法
  • @NigelRen 建议的副本是用于 oracle,而不是用于 mysql。
  • 虽然答案是针对 Oracle,但解决方案是一样的 - select rownum, table.* from table(来自之前链接的答案)
  • 感谢@NigelRen 指出可能的重复。它没有出现在我的搜索中。

标签: php mysql pdo


【解决方案1】:

你可以像下面那样做

SELECT `mytable`.`class` as `myclass`, `mytable`.*  FROM `mytable`

或者像这样

SELECT t.class AS myclass, t.*  FROM mytable t;

【讨论】:

  • 哇,这三个解决方案都可以解决 MySQL 语法错误。第一个对我没有多大帮助,因为我再次无法控制选择的第一列是什么。第三种解决方案是最好的,因为我可以使用通用表别名,这将是对我的查询生成器的最小修改。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-02-03
  • 1970-01-01
  • 1970-01-01
  • 2021-11-09
  • 2013-07-12
  • 2023-03-24
  • 1970-01-01
相关资源
最近更新 更多