首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL SELECT INTO OUTFILE和用户定义变量

问MySQL SELECT INTO OUTFILE和用户定义变量
EN

Stack Overflow用户
提问于 2009-10-07 20:43:31
回答 1查看 4.5K关注 0票数 2

你知道为什么这在MySQL 5.1中失败了吗:

代码语言:javascript
复制
SET @LOAD_TIME = UNIX_TIMESTAMP();
SET @OUTFILE = CONCAT(CONCAT('/tmp/outfile_', @LOAD_TIME), '.sql');

SELECT *
FROM `tableA`
INTO OUTFILE @OUTFILE;

这是MySQL的SELECT限制,还是我遗漏了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-10-07 21:25:33

您不能使用变量作为文件名。与LIMIT一样,它必须是文字值,而不是公式或变量。

例如,这里要写入的文件名是什么?

代码语言:javascript
复制
SET @LOAD_TIME = UNIX_TIMESTAMP();
SET @OUTFILE = CONCAT(CONCAT('/tmp/outfile_', @LOAD_TIME), '.sql');

SELECT @OUTFILE = columnA
, columnB
FROM `tableA`
INTO OUTFILE @OUTFILE;

这与LIMIT上的限制类似。如果在LIMIT子句中允许使用表达式,那么您可能会提出具有不可预知行为的查询。例如,假设您有一个有10行的表,列a的值为1到10。此查询的输出是什么?

代码语言:javascript
复制
SELECT *
  FROM myTable
ORDER
    BY a
 LIMIT 10 - a

此限制的基础是:如果可以计算限制,则应显式计算限制,然后使用文字值构建查询。允许计算像10 - a这样的表达式可能会使查询执行计划变得更加复杂。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1534084

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档