表:
[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个或更多经销商具有相同的价值,那么它就不会全部显示。
怎么了?
答案 0 :(得分:0)
我不认为,MySQL支持TOP运算符,就像SQL Server一样,但你可以使用LIMIT获得第一条记录,如下所示:
imageView.bounds
答案 1 :(得分:0)
加入两个表,使用COUNT()
,然后使用ORDER BY
和LIMIT 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)