比如A表房源表,B表房源图片表,A与B是一对多的关系。B字段house_id关联表A字段id。
现在需要列出A表信息及其所属图片第一张的类型(按图片上传时间排序)。
SQL Server可通过“PARTITION BY”实现。
SELECT TOP 15 h.id, h.info_address, m.image_type FROM mt_house_info_tbl h INNER JOIN (SELECT i.*, ROW_NUMBER() OVER (PARTITION BY i.house_id ORDER BY i.upload_time DESC) num FROM dbo.house_images_info_tbl i WHERE i.imgState <> 3) m ON m.house_id = h.id AND m.num = 1;
2.查看表字段信息:
偶尔需要获取某表中字段名、类型、最大长度等。
SELECT tbs.name, cols.name, cols.max_length, colsInfo.DATA_TYPE FROM sys.tables tbs INNER JOIN sys.columns cols ON cols.object_id = tbs.object_id INNER JOIN INFORMATION_SCHEMA.COLUMNS colsInfo ON colsInfo.COLUMN_NAME = cols.name AND colsInfo.TABLE_NAME = tbs.name WHERE tbs.name = 'mt_house_info_tbl'