【问题标题】:SELECT *, FUNCTION1(), FUNCTION(2) FROM选择 *、FUNCTION1()、FUNCTION(2) 从
【发布时间】:2014-07-27 15:59:47
【问题描述】:

有没有一种方法可以查询 MySQL 中的所有列,以便我可以模拟这个查询

SELECT *, FUNCTION1(), FUCTION2() FROM table1;

虽然不必枚举 select 子句中的每一列?

我想要实现的是消除枚举查询所需的所有列的繁琐任务,然后我将添加更多列以包含在结果集中。

可能看起来像:

SELECT *, col2 + col5 + col7 AS "sum" , CONCAT(col1," ",col3) FROM table1;

【问题讨论】:

  • 你想要达到什么目的?
  • 你尝试SELECT *, col2 + col5 + col7 AS "sum" , CONCAT(col1," ",col3) FROM table1;时发生了什么?
  • 这可能是设计不佳的问题。请参阅规范化。

标签: mysql sql


【解决方案1】:

是的,您可以完全按照您的展示方式进行操作。

选择列表中的术语可以是:

  • 一栏
  • 表达式
  • 通配符 (*)
  • 合格的通配符(例如table1.*

您可以在同一个 SELECT 查询中使用任何或所有这些。

严格来说,SQL-99 标准不允许* 与选择列表中的其他术语一起使用,但在这种情况下您可以使用合格的通配符。但是 MySQL 比较宽松,没有这个案例的标准那么严格。

https://mariadb.com/kb/en/sql-99-complete-really/29-simple-search-conditions/select-statement/ 显示标准规则。

http://dev.mysql.com/doc/refman/5.6/en/select.html 记录 MySQL 的行为。它说“将不合格的* 与选择列表中的其他项目一起使用可能会产生解析错误。为避免此问题,请使用合格的tbl_name.* 引用。”但根据我的经验,这很好。

【讨论】:

  • 我为这个愚蠢的问题道歉。但话又说回来,这个答案给了我需要学习的东西。
猜你喜欢
  • 1970-01-01
  • 2013-07-31
  • 1970-01-01
  • 1970-01-01
  • 2015-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多