我知道答案,我的问题有什么做的排名,只是不知道该怎么做完全是。我的发言目标是只获得5条记录,但优先考虑某个表格上的记录而非另一个表格。另一个SQL语句我不明白
我有两个表:News
和NewsToLocation
。
让我们假设有在新闻台4个新闻和3在满足我的要求的NewsToLocation
。因为我只能选择5我要确保在News
表中4得到的偏好,然后只从NewsToLocation
表中选择1。我目前的查询是做相反的,我不知道如何解决它。
这里是整个查询。
SELECT
newSpotlights.*
FROM
(SELECT
TOP 5 n.news_id,
n.is_spotlight,
n.location_id,
n.news_title,
CAST(n.news_content AS varchar(200)) AS news_content,
n.writing_date,
n.publication_date,
n.end_date,
n.alt_uri,
n.youtube_code,
n.icon_img_file,
n.banner_img_file
FROM
(SELECT
n.news_id
FROM rcde_news n
WHERE n.location_id = 4
AND n.is_spotlight = 1 AND n.publication_date < GETDATE() AND n.end_date > GETDATE()
AND n.status_id = 2 /*2 = Active rcde_ItemStatus*/
UNION
SELECT
n.news_id
FROM rcde_newsToLocation ntl
INNER JOIN rcde_news n ON ntl.news_id = n.news_id
WHERE ntl.location_id = 4
AND n.status_id = 2 /*2 = Active rcde_ItemStatus*/
) AS News
INNER JOIN rcde_news n ON news.news_id = n.news_id
WHERE n.is_spotlight = 1
AND n.publication_date < GETDATE()
AND n.end_date > GETDATE()
ORDER BY publication_date DESC
) AS newSpotlights
我觉得我应该可以做一些排序最内在的查询排序,但我不知道该怎么做。我有点明白排名,但不知道我会怎么做一个UNION
声明。我可以做一些简单的事情,比如在联盟的不同部分分别选择1作为等级和2作为等级,然后按等级排序?
这很简单。我知道它不必像我一样努力。 – Leeish