繁体   English   中英

组合两个选择 SQL 查询

[英]Combine two select SQL queries

我想知道是否可以将这两个 sql 查询组合在 1 个唯一查询中。

    SELECT DISTINCT Pseudo FROM Games 
WHERE Time_Format IS NOT NULL 
AND Score IS NOT NULL 
AND Result = 'Win' ORDER BY Date DESC


    SELECT ID_Game,Time_Format,Time,Score,Date 
FROM Games 
WHERE Time_Format IS NOT NULL 
AND Score IS NOT NULL 
AND Result = 'Win' 
AND Pseudo = to the previous result of the other request
ORDER BY Time ASC,Score DESC LIMIT 1

这是Games表中的数据示例

 INSERT INTO Games(ID_Game, Pseudo, Time_Format,Time, Score,Statut, Result , Date, Date_Fin) VALUES (1,'bob','00:22',22,125,'completed','Win','2022-06-22 13:47:43','2022-06-22 13:47:52'),
(1,'bob2','00:52',52,369,'completed','Lose','2022-06-22 13:40:22','2022-06-22 13:40:22'),
(1,'bob3','00:36',36,650,'completed','Win','2022-06-22 13:22:22','2022-06-22 13:22:22'),
(1,'bob4','00:40',40,378,'completed','Win','2022-06-22 13:12:22','2022-06-22 13:12:22');

我想知道的是获得获胜比赛的最佳时间和得分,但我不希望结果中有两个相同的昵称

在此先感谢您的帮助 :)

您应该使用CTEsubquery 我更喜欢 CTE:

WITH cte AS (
    SELECT DISTINCT Pseudo
    FROM Games 
    WHERE Time_Format IS NOT NULL 
        AND Score IS NOT NULL 
        AND Result = 'Win'
    --ORDER BY Date DESC
)

SELECT ID_Game,Time_Format,Time,Score,Date 
FROM Games 
WHERE Time_Format IS NOT NULL 
    AND Score IS NOT NULL 
    AND Resultat = 'Win' 
    AND Pseudo = (SELECT pseudo FROM cte)
ORDER BY Time ASC, Score DESC
LIMIT 1;

,但如果 CTE 不是一个选项,则有一个带有子查询的版本:

SELECT ID_Game,Time_Format,Time,Score,Date 
FROM Games 
WHERE Time_Format IS NOT NULL 
    AND Score IS NOT NULL 
    AND Resultat = 'Win' 
    AND Pseudo = (
        SELECT DISTINCT Pseudo
        FROM Games 
        WHERE Time_Format IS NOT NULL 
            AND Score IS NOT NULL 
            AND Result = 'Win'
        --ORDER BY Date DESC
    )
ORDER BY Time ASC, Score DESC
LIMIT 1;

如果 CTE 返回多个值,只需将AND Pseudo = (SELECT pseudo FROM cte)替换为AND Pseudo IN (SELECT pseudo FROM cte)

暂无
暂无

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

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