使用临时表不起作用-MYSQL
我的目标是优化select查询,该查询根据单词的相关性进行排序 而不是搜索整个数据库两次,我在这里做了这个查询使用临时表不起作用-MYSQL,mysql,sql,select,Mysql,Sql,Select,我的目标是优化select查询,该查询根据单词的相关性进行排序 而不是搜索整个数据库两次,我在这里做了这个查询 $query = "SELECT * INTO #TEMP_TABLE " . "FROM cron_video ". "where id LIKE '%" . $searchString . "%' " . "union all " .
$query = "SELECT * INTO #TEMP_TABLE " .
"FROM cron_video ".
"where id LIKE '%" . $searchString . "%' " .
"union all " .
"SELECT * " .
"FROM #TEMP_TABLE ".
"WHERE id LIKE '". $searchString . "%' " ;
但它给出了错误的定义
SQL错误1:您的SQL语法有错误;请查看与MySQL服务器版本对应的手册,以获取第1行“”附近要使用的正确语法
在运行查询之前使用“创建临时表”(定义适合您需要的结构) 此外,为了保持一致性,请仅将表命名为a-zA-Z_-
另外,请将您的查询作为一个整体提供给MySQL,包括换行符,这样将来调试会更容易,即“第6行出错”,而不是“第1行出错”(因为将始终只有一行输入MySQL。在运行时创建的临时表…所以请编写
创建临时表
…语法和插入到
中
从
创建表时可以使用临时关键字。临时关键字
表仅对当前连接可见,并且已删除
当连接关闭时自动执行。这意味着
不同的
例如
CREATE TEMPORARY TABLE tmp_film (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(50),
`last_updated_on` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY(`id`)
)ENGINE=HEAP DEFAULT CHARSET=latin1;
INSERT INTO tmp_film(`name`) VALUES ('Keshav');
SELECT * FROM tmp_film;
临时表将在运行时生成…从表中选择时是否真的可以选择到表中?@user714965 ya我现在明白了,但是如何优化查询而不是两次从完整表中选择*。