Sql 从数据库中的多个结果中选择一个
问题: 通过在不同的表上应用多个联接,我正在从sql server填充asp.net报表。它可以工作,但会产生一个问题,我通过手机号来选择警察局的名称。问题是1个手机号可以是多个警察局的,所以它会选择每个警察局的名称,并显示在报告中。我只想要一个警察局的名字,我需要从警察局表 查询:Sql 从数据库中的多个结果中选择一个,sql,sql-server,sql-server-2008,tsql,Sql,Sql Server,Sql Server 2008,Tsql,问题: 通过在不同的表上应用多个联接,我正在从sql server填充asp.net报表。它可以工作,但会产生一个问题,我通过手机号来选择警察局的名称。问题是1个手机号可以是多个警察局的,所以它会选择每个警察局的名称,并显示在报告中。我只想要一个警察局的名字,我需要从警察局表 查询: SELECT [ID] ,LEFT(REPLACE(convert(varchar, CmsSMSDb.dbo.SendMessages.SendingDateTime, 113), ' ','/'),
SELECT [ID]
,LEFT(REPLACE(convert(varchar, CmsSMSDb.dbo.SendMessages.SendingDateTime, 113), ' ','/'), 11) + ' ' +
RIGHT(REPLACE(convert(varchar, CmsSMSDb.dbo.SendMessages.SendingDateTime, 113), ' ','/'), 12)
as SendingDateTime
,[ToMobileNo]
,[Message]
,Designations.Name as [ToDesignation]
FROM [CmsSMSDb].[dbo].[SendMessages]
inner join
CPOCMS.dbo.Designations
ON CPOCMS.dbo.Designations.MobileNo = CmsSMSDb.dbo.SendMessages.ToMobileNo
where Convert(date,CmsSMSDb.dbo.SendMessages.SendingDateTime)>= @DateFrom
AND
Convert(date,CmsSMSDb.dbo.SendMessages.SendingDateTime)<= @DateTo
Union All
SELECT [ID]
,LEFT(REPLACE(convert(varchar, CmsSMSDb.dbo.SendMessages.SendingDateTime, 113), ' ','/'), 11) + ' ' +
RIGHT(REPLACE(convert(varchar, CmsSMSDb.dbo.SendMessages.SendingDateTime, 113), ' ','/'), 12)
as SendingDateTime
,[ToMobileNo]
,[Message]
,'SDpo'+' '+CPOCMS.dbo.PoliceStations.PsName as [ToDesignation]
From [CmsSMSDb].[dbo].[SendMessages]
inner join CPOCMS.dbo.PoliceStations
ON CPOCMS.dbo.PoliceStations.sDpo_ContactNo = SendMessages.ToMobileNo
where Convert(date,CmsSMSDb.dbo.SendMessages.SendingDateTime)>= @DateFrom
AND
Convert(date,CmsSMSDb.dbo.SendMessages.SendingDateTime)<= @DateTo
order by SendMessages.ID
数据库结构:
只需像这样使用TOP子句
SELECT TOP 1 ColumnA,
...,
...
...
..
除了联系号码,还有其他列你需要考虑的,如果不是,你可以简单地采取前1名。或者如果你需要一个随机的,那么你可能需要添加一个随机选择逻辑。没有其他的,我已经尝试了很多,但找不到任何方法将你的输出存储在临时表中,并获得它的前1。或者只需在您的选择中添加前1名