繁体   English   中英

从另一个表创建表-MYSQL到MSSQL的转换

[英]Create Table from Another Table - MYSQL to MSSQL conversion

我正在将数据库从MYSQL转换为MSSQL / TSQL,但无法在MSSQL中使用以下MYSQL查询。 寻找新鲜的眼睛看我所缺少的。

工作的MYSQL查询:

CREATE TABLE tempTable 
AS (SELECT * FROM Note WHERE createdate IN (SELECT MAX(createdate) 
FROM Note GROUP BY `taskPK`));

查询将查找给定ID的注释行的最大日期。 可能会有多个具有相同ID的Note行,它将找到最新的行并将其插入到新表中。

非工作MSSQL示例1 :( “(')附近的语法不正确

CREATE TABLE tempTable 
AS(SELECT * FROM dbo.Note WHERE createdate IN (SELECT MAX(createdate) 
FROM dbo.Note GROUP BY taskPK));

非工作MSSQL示例2 :(关键字INTO附近的语法不正确)

SELECT * 
FROM Note 
WHERE createdate IN (SELECT MAX(createdate) FROM Note GROUP BY taskPK) 
INTO tempTable FROM Note;

此新表(一旦创建)将在以下查询中使用(我尚未在MSSQL中对其进行测试):

SELECT Task.id, Task.taskdescription, Task.status, TaskSchedule.date, TaskGroups.name, tempTable.createDate FROM Task 
LEFT JOIN TaskSchedule ON Task.id = TaskSchedule.taskPK
LEFT JOIN TaskGroups ON Task.taskgroupid = TaskGroups.id
LEFT JOIN tempTable ON Task.id = tempTable.taskPK
WHERE Task.userPK = '$userPK' AND Task.status = 'Open'
ORDER BY tempTable.createDate DESC;

上面的查询从一个我遇到问题的上一个查询中选择了一个包含最新笔记的任务,以防万一,使我变得更加困难。

您不能在mssql中使用Create table asSelect table into

采用:

SELECT * INTO tempTable FROM Note N
WHERE N.createdate IN (SELECT MAX(N1.createdate) FROM Note N1 GROUP BY N1.taskPK)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM