0

我的目标是优化按单词相关性排序的选择查询,

而不是搜索整个数据库两次,我在这里做了这个查询。

$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 行的 '' 附近使用正确的语法

4

2 回答 2

1

在运行查询之前使用 CREATE TEMPORARY TABLE(定义适合您需要的结构)。

此外,为了保持一致性,仅使用 a-zA-Z_- 命名您的表。

http://dev.mysql.com/doc/refman/5.1/en/create-table.html

另外,请将您的查询作为一个整体提供 MySQL,包括换行符,将来调试会更容易,即“第 6 行错误”,而不是“第 1 行错误”(因为总是只有被馈送到mysql的一条线。

于 2013-03-20T10:03:59.640 回答
0

在运行时创建的临时表......所以写

CREATE TEMPORARY TABLE...语法, INSERT INTO因此...

MySQL manual

创建表时可以使用 TEMPORARY 关键字。TEMPORARY 表仅对当前连接可见,并在连接关闭时自动删除。这意味着两个不同的

例如。

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;
于 2013-03-20T10:04:51.060 回答