首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将mysql查询转换为transact SQL查询

如何将mysql查询转换为transact SQL查询
EN

Stack Overflow用户
提问于 2018-08-15 02:59:26
回答 4查看 86关注 0票数 1

我有一个在MySQL中工作的查询。我需要使用TRANSACT SQL创建相同的结果。我还没弄明白这个咒语。下面是MySQL查询:

代码语言:javascript
复制
CREATE TEMPORARY TABLE tempo AS 
(SELECT master, MAX(nev) AS max 
 FROM accounts 
 WHERE where-clause 
 GROUP BY master 
 ORDER BY max DESC LIMIT 3);

SET @min = (SELECT MIN(max) FROM tempo);

SELECT * FROM accounts 
WHERE master IN (SELECT master FROM tempo) AND nev >= @min ORDER BY NEV DESC;

如能提供帮助或指向说明,将不胜感激

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-08-15 03:03:12

我从来没有用过MySQL,但我想这就是你想要的:

代码语言:javascript
复制
DECLARE @min INT;

SELECT TOP 3
       master
     , MAX(nev) AS max
INTO #tempo
FROM accounts
WHERE WHERE-clause
GROUP BY master
ORDER BY max DESC;

SELECT @min = MIN(max)
FROM #tempo;

SELECT *
FROM accounts
WHERE master IN
      (
          SELECT master FROM #tempo
      )
      AND nev >= @min
ORDER BY NEV DESC;
票数 0
EN

Stack Overflow用户

发布于 2018-08-15 03:06:13

代码语言:javascript
复制
SELECT top 3 master, MAX(nev) AS max into #tempo FROM accounts WHERE where-clause GROUP BY master ORDER BY max DESC;

DECLARE @min NUMERIC(38);
SET @min = (SELECT MIN(max) FROM #tempo);

SELECT * FROM accounts WHERE master IN (SELECT master FROM #tempo) AND nev >= @min ORDER BY NEV DESC;

我会这样翻译。但是你不需要临时的。您可以编写一个查询来获得您的结果,这对SQL引擎来说会更好。希望能有所帮助。

票数 0
EN

Stack Overflow用户

发布于 2018-08-15 03:08:58

如下所示:

代码语言:javascript
复制
WITH tempo AS (
    SELECT TOP 3 master, 
        MAX(nev) AS max 
    FROM accounts 
    WHERE [WHERE-clause] 
    GROUP BY master 
    )

SELECT @min = MIN(max)
FROM tempo;

SELECT *
FROM accounts
WHERE master IN (
        SELECT master
        FROM tempo
        )
    AND nev >= @min
ORDER BY NEV DESC;

也就是说,可能有更好的方法来编写它(例如SQL Server中的单个查询),但每个方法都有自己的方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51848172

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档