select distinct * from Drivers where IsDeleted=0
给了我这个,
alt text http://www.imagechicken.com/uploads/1274691753099236100.jpg
我想根据不同的DriverMobNo
列
答案 0 :(得分:1)
select * from Drivers where DriverMobNo in (select DriverMobNo from Drivers where IsDeleted=0
group by DriverMobNo ) and IsDeleted=0
答案 1 :(得分:1)
鉴于您有三行具有相同的DriverMobNo
- 您在执行SELECT
时需要这三行中的哪一行?任意一个?最近一个?最古老的一个??
你当然可以做一个
SELECT DISTINCT DriverMobNo FROM dbo.Drivers WHERE IsDeleted = 0
并获取那些不同的DriverMobNo
值 - 但是如果您想拥有SELECT中的所有列,则需要更具体地说明要检索DriverMobNo = 9566643707
的三行中的哪一行
更新:好的,你想要最老的一个 - 一种方法是使用CTE(公用表表达式):
WITH Drivers AS
(
SELECT
DriverId, DriverName, DriverMobNo, CreatedDate,
ROW_NUMBER() OVER (PARTITION BY DriverMobNo ORDER BY CreatedDate) 'RowNo'
FROM dbo.Drivers
WHERE IsDeleted = 0
)
SELECT DriverId, DriverName, DriverMobNo, CreatedDate
FROM Drivers
WHERE RowNo = 1
应该按DriverMobNo
对数据进行“分区”,并按创建日期排序,因此RowNo = 1条目始终是每个DriverMobNo
的最早条目。
答案 2 :(得分:1)
这将为每个DriverMobNo选择一个驱动程序。如果特定DriverMobNo有多个驱动程序,则返回第一个驱动程序。
select * from Drivers
where DriverId in (
select min(DriverId) from Drivers
where IsDeleted = 0
group by DriverMobNo
)
答案 3 :(得分:0)
有点难以理解你想要的东西。
因为你有独特的行,你必须使用你需要的颜色。
例如
SELECT DISTINCT DriveMobNo, 创建日期 从 驱动程序 哪里 IsDeleted = 0
会为您提供唯一的驱动程序编号和创建的日期,但您仍然会有相同的手机号码返回两次,因为那里有不同的日期