2012-03-14 84 views
0

我想做一个mysql查询来从表中选择一些新闻报道,现在关键是我总是需要5个结果。mysql选择此查询然后用此查询填充?

,所以我希望能够垫出我的结果与另一where子句即

select * from here where this = 1 
if there is < 5 results then select * from here where this = 2 
limit [how ever many we are short say the first query brings back 3 results this should bring back 2] 

现在我已经看了利用工会要做到这一点,但没有从PHP和另一个查询外界的帮助,即要计算结果我不认为这是可能的,我知道我可以简单地使用PHP来做到这一点,并可能最终这样做,但我只是想知道我想要做什么可能与一个MySQL查询?

编辑:

还需要按日期排序,但他们并没有真正张贴在为了使

按日期得到高达5中,其中该= 1,如果没有5垫出来剩下的这个= 2也按日期排序。

另一种可耻编辑:

问一个愚蠢的问题笑......这是我的睡眠剥夺我只是认为在表和以前的编码器数据是用工会做各种各样的东西,让我有认为这是更复杂的比它应该是

SELECT * 
FROM 
news 
WHERE 
(this = 45 || this= 0) 
AND 
active = '1' 
ORDER BY 
this ASC, 
date_added DESC 
LIMIT 5 
+0

如果我们的查询不会返回您正在查找的内容,请解释他们的结果有什么问题。 – nnichols 2012-03-14 14:01:58

+0

问一个愚蠢的问题大声笑...这是我的睡眠剥夺我只是认为有一个在表和以前的编码器数据是用工会做各种各样的东西,让我觉得这是更复杂的比它应该是 SELECT * FROM 新闻 WHERE (此= 45 ||此= 0) 和 活跃= '1' ORDER BY 这个ASC, DATE_ADDED DESC LIMIT 5 – user1054495 2012-03-14 14:07:02

回答

2

怎么样 -

SELECT * 
FROM here 
WHERE this < 5 -- added this WHERE clause based on the idea that there will be at least one item per this 
ORDER BY this ASC, `date` ASC 
LIMIT 5; 

还是你的五个结果然后被再次日期排序之后 -

SELECT * 
FROM (
    SELECT * 
    FROM here 
    WHERE this < 5 -- added this WHERE clause based on the idea that there will be at least one item per this 
    ORDER BY this ASC, `date` ASC 
    LIMIT 5 
) AS tmp 
ORDER BY `date` ASC 
+0

是一个很好的想法大声笑,但我需要得到5,其中x = 1,如果有没有5说那里只有2我需要得到3其中x = 2 他们也按日期排序所以如果我做 SELECT * FROM here WHERE(x = 1 || x = 2)ORDER BY date ASC 那么它将首先返回x = 2,如果没有足够的x = 1,我只想填充它们。 x = 2)ORDER BY x ASC,日期ASC 似乎不工作,或者 – user1054495 2012-03-14 13:39:42

+0

我的查询(和@ManseUK的)都将满足您原来的问题。如果你想让它做别的事情,你需要更新你的问题,并更好地解释你正在寻找什么。 – nnichols 2012-03-14 13:55:33

+0

+1'ORDER BY'和'LIMIT'是答案。 – 2012-03-14 13:56:01

1

你可以结合起来,where子句和使用限制:

select * FROM here WHERE this = 1 OR this = 2 ORDER BY this LIMIT 5 

即使在有15条记录,其中this等于1这只会带回5个记录......

+1

你会想要一个'ORDER BY'来确保你首先得到'WHERE this = 1'的结果。 – Travesty3 2012-03-14 13:35:18

+0

@ Travesty3谢谢你的意见.... – ManseUK 2012-03-14 13:36:17