我正在将数据库从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;
上面的查询选择了一个任务,其中包含上一个查询中我遇到问题的最新注释 - 添加此内容使我更难以实现此目标。
答案 0 :(得分:1)
您无法在mssql中使用Create table as
或Select table into
使用:
SELECT * INTO tempTable FROM Note N
WHERE N.createdate IN (SELECT MAX(N1.createdate) FROM Note N1 GROUP BY N1.taskPK)