在MySQL中,这部分代码可以工作并生成一行“1”作为值。
SELECT DISTINCT 1 AS score
ORDER BY score DESC;
但是,当我使用它创建临时表时,如下所示:
DROP TEMPORARY TABLE IF EXISTS `testTable`;
CREATE TEMPORARY TABLE `testTable`
SELECT DISTINCT 1 AS score
ORDER BY score DESC;
MySQL会说:你的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以便在第3行的“order by score desc”附近使用正确的语法
请注意,以下代码适用于没有ORDER BY的代码
DROP TEMPORARY TABLE IF EXISTS `testTable`;
CREATE TEMPORARY TABLE `testTable`
SELECT DISTINCT 1 AS score;
如下所示,使用FROM子句附加它将起作用......
DROP TEMPORARY TABLE IF EXISTS `testTable`;
CREATE TEMPORARY TABLE `testTable`
SELECT DISTINCT 1 AS score
FROM tableX
ORDER BY score DESC;
我知道上面的示例并不重要,但这更像是一个好奇的问题。感谢。
答案 0 :(得分:0)
select语句完全有效所以它应该可以工作,但是MySQL可能对这个语句有点挑剔或错误。
您可能缺少要存储数据的列的数据类型。添加列名和数据类型使其有效。
CREATE TEMPORARY TABLE testTable
(得分INTEGER)SELECT 1 AS得分;
如果没有指定数据类型,则在这种情况下,create语句必须猜测它是否为tinyint,smallint,integer ...如果从表中选择,则在表中定义数据类型。
答案 1 :(得分:0)
应该是CREATE TEMPORARY TABLE testTable AS SELECT ...? (也就是说,在表名后面添加一个AS。)