0
有麻烦在这里找出一个查询,需要一些投入。我要加入多个表的查询,并为每个唯一值(VIN)返回多行SQL - 如何选择每个唯一值前3行返回
SELECT
T1.VIN
,T1.station
,T1.complete_time
,T2.location
,T1.previous_status
FROM DBName.dbo.table_name1 T1 WITH (NOLOCK)
LEFT OUTER JOIN DBName.dbo.table_name2 T2 WITH (NOLOCK)
ON T2.object_key = T1.queue_key
LEFT OUTER JOIN DBName.dbo.table_name3 T3 WITH (NOLOCK)
ON T3.op_name = T1.op_name
LEFT OUTER JOIN DBName.dbo.table_name4 T4 WITH (NOLOCK)
ON T1.VIN = T4.VIN
WHERE T1.VIN IN
(
'ABC12301'
,'ABC12302'
,'ABC12303'
,'ABC12304'
,'ABC12305'
,'ABC12306'
,'ABC12307'
)
ORDER BY T1.complete_time desc
这里是我的输出是什么。它会显示所有返回的行对于每个唯一的VIN
VIN Station Complete_Time Location Previous_Status
ABC12301 SOLD 2017-02-22 09:07:00 Y 800
ABC12301 PIT 2017-02-22 09:05:00 P 610
ABC12301 Drag 2017-02-22 09:03:00 P 610
ABC12301 Rain 2017-02-22 09:03:00 P 610
ABC12301 Trim 2017-02-22 09:01:00 P 610
ABC12302 SOLD 2017-02-22 08:59:00 Y 800
ABC12302 PIT 2017-02-22 08:57:00 P 610
ABC12302 Drag 2017-02-22 08:56:00 P 610
ABC12302 Rain 2017-02-22 08:54:00 P 610
ABC12302 Trim 2017-02-22 08:50:00 P 610
ABC12303 SOLD 2017-02-22 08:49:00 Y 800
ABC12303 PIT 2017-02-22 08:47:00 P 610
ABC12303 Drag 2017-02-22 08:46:00 P 610
ABC12303 Rain 2017-02-22 08:44:00 P 610
ABC12303 Trim 2017-02-22 08:40:00 P 610
.
.
.
.etc.............
我想这是什么查询做的是只显示前3行每一个独特的VIN,像下面
VIN Station Complete_Time Location Previous_Status
ABC12301 SOLD 2017-02-22 09:07:00 Y 800
ABC12301 PIT 2017-02-22 09:05:00 P 610
ABC12301 Drag 2017-02-22 09:03:00 P 610
ABC12302 SOLD 2017-02-22 08:59:00 Y 800
ABC12302 PIT 2017-02-22 08:57:00 P 610
ABC12302 Drag 2017-02-22 08:56:00 P 610
ABC12303 SOLD 2017-02-22 08:49:00 Y 800
ABC12303 PIT 2017-02-22 08:47:00 P 610
ABC12303 Drag 2017-02-22 08:46:00 P 610
哪种数据库? 'mysql'或'sql-server'? – DVT
最有可能的sql_server ... MySQL不支持类似“WITH(NOLOCK)”的语法..请修复标签 –
SQL Server也不喜欢NOLOCK。它能够而且将会返回重复和/或丢失的行以及其他奇怪的事情一大堆。 http://blogs.sqlsentry.com/aaronbertrand/bad-habits-nolock-everywhere/ –