【发布时间】:2009-07-21 13:00:25
【问题描述】:
我需要从一个表中获取 5 条随机记录,以及基于存储在第二个表中的用户偏好数据的另一条记录。
这是我目前创建的两个语句:
根据 TBL_MEMBERS 中的密钥集获得最喜欢的慈善机构:
SELECT DISTINCT TBL_CHARITIES.* FROM TBL_CHARITIES JOIN TBL_MEMBERS ON TBL_CHARITIES.cha_Key = TBL_MEMBERS.members_Favourite WHERE TBL_MEMBERS.members_Id = 16
随机获得 5 个慈善机构:
SELECT TOP 5 * FROM TBL_CHARITIES WHERE cha_Active = 'TRUE' AND cha_Key != '1' ORDER BY NEWID();
在存储过程中使用时,它只会将第一个 SELECT 语句返回到我的 .Net 页面。如何在确保没有重复结果的同时结合这两个语句(例如,5 个随机记录中不存在收藏夹?
非常感谢!
好的!所以现在我更新了一些东西并得到了以下信息:
CREATE PROCEDURE web.getRandomCharities ( @tmp_ID bigint --members ID ) AS BEGIN
WITH q AS
(
SELECT TOP 5 *
FROM TBL_CHARITIES
WHERE cha_Active = 'TRUE'
AND cha_Key != '1'
ORDER BY NEWID()
)
SELECT * FROM q
UNION ALL
SELECT TOP 1 * FROM (
SELECT * FROM TBL_CHARITIES WHERE TBL_CHARITIES.cha_Key IN
( SELECT members_Favourite FROM TBL_MEMBERS WHERE members_Id = @tmp_ID ) EXCEPT SELECT * FROM q ) tc
END
现在我需要能够记录“cha_Key == '1'”,但前提是它不是用户最喜欢的。这可能吗?
感谢到目前为止所做的一切。它真的很感激。
【问题讨论】:
-
两个 SELECT 语句的结果应返回到您的 .NET 应用程序。您需要使用 DataSet,结果存储在 DataSet.DataTables 中。
-
我如何通过 TBL_CHARITIES.cha_Key 订购?
-
您最好只编辑原始问题并提供更多详细信息。 meta.stackexchange.com/questions/7771/…
-
我意识到了这一点,并在不久之后对其进行了更新。谢谢。
标签: sql sql-server sql-server-2005 tsql stored-procedures