SQL Server在单个查询中返回多个查询

时间:2013-10-14 15:20:59

标签: sql sql-server sql-server-2008

我有下表

ID      TYPE        Text       ImagePath     Title    Date

 1      Text        Test        NULL          NULL     14/10/2013
 2      Image       NULL        /test/test    NULL     14/10/2013
 3      Title       NULL        NULL          Test     14/10/2013
 4      Text        Test2       NULL          NULL     20/12/2012

如何仅检索最后3个(按日期排序)记录,1个类型为Text,1个类型为Image,1个类型为Title? (基本上我只需要非NULL的类型和相关字段。

2 个答案:

答案 0 :(得分:0)

一个想法可能是:

SELECT  * FROM table where TYPE = 'Text' OFFSET 1 ROWS FETCH NEXT 1 ROWS ONLY 
union
SELECT  * FROM table where TYPE = 'Image' OFFSET 1 ROWS FETCH NEXT 1 ROWS ONLY 
union
SELECT  * FROM table where TYPE = 'Title' OFFSET 1 ROWS FETCH NEXT 1 ROWS ONLY 

答案 1 :(得分:0)

除了我在你的问题评论中所说的重组数据库之外,这应该给你你想要的东西(如果我理解正确的话):

SELECT
TOP 1 
'Text' AS Type,
Text
FROM
your_table
ORDER BY Date DESC
UNION ALL
SELECT
TOP 1 
'ImagePath',
ImagePath
FROM
your_table
ORDER BY Date DESC
UNION ALL
SELECT
'Title', 
TOP 1 Title
FROM
your_table
ORDER BY Date DESC

你可能需要在这里和那里放一些parantheses才能使它工作......