你知道为什么这在MySQL 5.1中失败了吗:
SET @LOAD_TIME = UNIX_TIMESTAMP();
SET @OUTFILE = CONCAT(CONCAT('/tmp/outfile_', @LOAD_TIME), '.sql');
SELECT *
FROM `tableA`
INTO OUTFILE @OUTFILE;这是MySQL的SELECT限制,还是我遗漏了什么?
发布于 2009-10-07 21:25:33
您不能使用变量作为文件名。与LIMIT一样,它必须是文字值,而不是公式或变量。
例如,这里要写入的文件名是什么?
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。此查询的输出是什么?
SELECT *
FROM myTable
ORDER
BY a
LIMIT 10 - a此限制的基础是:如果可以计算限制,则应显式计算限制,然后使用文字值构建查询。允许计算像10 - a这样的表达式可能会使查询执行计划变得更加复杂。
https://stackoverflow.com/questions/1534084
复制相似问题