SQL ISSUE-查询计数帮助+分钟

时间:2018-05-30 18:08:45

标签: sql sql-server

表:

[dbo].[Dealer]
[number] [firstName] [surName]   [birthDate] [startWorkingDate] [ID]
Num Dealer|full name of Dealers| birthdate | date + time       | id number
[dbo].[Game]

[gameTypeName] [gameStartDateTime] [gameEndTime] [DealerInGame]
name of game  | date + time      | date + time| same numbers like [Dealer].[number]

我想要查询的内容: 返回经销商(员工编号和全名)的查询,参与最少量的游戏。

SELECT top 1 number,firstName +' '+ surName as 'full name' FROM Dealer
where  exists (SELECT gameTypeName,COUNT( gameTypeName)  FROM Game 
GROUP BY gameTypeName)

查询只给我带来了第一个游戏数量最少的游戏,但如果有2个或更多经销商具有相同的价值,那么它就不会全部显示。

怎么了?

4 个答案:

答案 0 :(得分:0)

我不认为,MySQL支持TOP运算符,就像SQL Server一样,但你可以使用LIMIT获得第一条记录,如下所示:

imageView.bounds

答案 1 :(得分:0)

加入两个表,使用COUNT(),然后使用ORDER BYLIMIT 1。这是它的MySQL语法:

SELECT number, CONCAT(firstName, ' ', lastName) AS fullName
FROM Dealer AS d
JOIN Game AS g ON g.DealerInGame = d.number
GROUP BY d.number
ORDER BY COUNT(*)
LIMIT 1

答案 2 :(得分:0)

您可以执行join

select d.number, CONCAT(d.firstName, ' ', d.lastName) as fullName
from Dealer d inner join ( 
           select DealerInGame
           from Game
           group by DealerInGame
           having count(*) <= 1
      ) g on g.DealerInGame = d.number;

答案 3 :(得分:0)

如果您希望所有经销商拥有最少数量的游戏,您需要参加最少数量的游戏,然后找到所有拥有该游戏数量的经销商。

WITH GameCount as (
    SELECT 
        DealerInGame, 
        Count(*) Games
    FROM Game
    )

SELECT 
    d.firstName + ' ' + d.surName fullName,
    d.number
FROM GameCount g
    LEFT JOIN Dealer d on d.Number = g.DealerInGame
WHERE g.Games = (
    SELECT Min(Games)
    FROM GameCount)