mysql - 如何在 MySQL 的 View 中创建临时表

标签 mysql sql sql-server

TMP_HELLO里面有实时的CRM数据,希望能通过seq得到最新的产品

CREATE VIEW dbcrm.V_HELLO AS
CREATE TEMPORARY TABLE temp_table (count int);
insert into temp_table select max(seq) from dbcrm.TMP_HELLO group by ProductID;
SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
SELECT minute(aa.UpdateOn) - minute(aa.TickTime), aa.* 
FROM dbcrm.TMP_HELLO aa
where aa.seq in (select count from temp_table) limit 10000;
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;

此 View 供MS SQL Server的链接服务器读取

最佳答案

创建 View 时不能使用临时表。查看MSDN - CREATE VIEW页;具体请参阅“ View 定义中的 SELECT 子句不能包含以下内容”部分:

如果您实际上使用的是 Microsoft SQL Server(而不是问题标签所建议的 MySQL),则可以使用 CTE 而不是临时表。几个关于 CTE 的好页面:

SQL Server CTE Basics

MSDN - Using Common Table Expressions

MSDN - WITH common_table_expression

关于mysql - 如何在 MySQL 的 View 中创建临时表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19151297/

相关文章:

mysql - mysql 子查询错误

sql - 查询执行错误期间超出资源,Google BigQuery

SQL Server : flatten results from One to Many query

mysql - 为什么用 varbinary 而不是 varchar

c# - DbGeography 相交方法不起作用

mysql - MySql索引(B+树)中的指针如何保持有效,而索引可以存储在磁盘中并返回到另一个页面?

python - 通过python使用密码执行unix命令

mysql - mysqli 错误为 : Unknown database

c# - Sharepoint 数据库安全 - SQL 注入(inject)

mysql - 如何编写简单的 MySQL 工作台查询