【发布时间】:2011-11-26 09:19:27
【问题描述】:
这个问题都是关于懒惰的......我想做这样的事情:
select some_func(some_col), * from my_table
这样我就不必这样做了:
select some_func(some_col), col_1, col_2... col_ad_infinitum from my_table
有没有办法让第一个查询工作?这是我运行它时遇到的错误:
ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '* from my_table' at line 1
【问题讨论】:
-
第一个查询应该可以正常运行。您的意思是您希望
some_col被排除在查询的*部分之外吗?如果是这样,不,你不能那样做。这是一个备受争议的问题,唯一的 惰性 方法是使用动态 SQL 来生成查询中的列列表。 -
您的第一个查询应该可以工作。你试过了吗?
-
Select 的目标是什么?它有什么作用?它是否将数据返回给应用程序?一份报告?如果您更改 my_table,您的查询现在将返回比以前更多的列,这往往会搞砸一些事情。这是一个等待发生的错误。
-
懒惰而不是(不懒惰)输入50个列名:)
-
@mellamokb:第一个查询没有按原样运行。它会在 MySQL 的 5.1 和 5.5 版本中产生错误。