你能建议一个总是会执行条件的查询吗?说:
if($country == 'hong-kong')
{
$cond = "AND country = 'china'";
}
$q = "
SELECT
*
FROM
tbl_people
WHERE
region = 'asia'
$cond
ORDER BY RAND()
LIMIT 0,15
";
现在假设$country = 'hong-kong'
,它总共有4名成员。我想知道的是,如果$country = 'hong-kong'
我在结果集中有15个成员,包括来自hong-kong
的4个成员,那么有什么办法吗?
答案 0 :(得分:1)
如果我正确理解了这个问题,您需要来自较大集合的15个随机结果,但您希望确保匹配country = 'hong-kong'
的所有结果都包含在这些结果中。
我认为您将需要两个查询,因为第一个(country = 'hong-kong'
)返回的记录数将决定您对第二个查询的限制。 E.g:
SELECT
*
FROM
tbl_people
WHERE
country = 'hong-kong'
ORDER BY RAND()
LIMIT 0,15
然后
SELECT
*
FROM
tbl_people
WHERE
region = 'asia' AND country <> 'hong-kong'
ORDER BY RAND()
LIMIT 0,X
...其中X
为15 - N
,其中N
是您的第一个查询返回的行数。
当然,你必须以某种随机方式将它们组合起来(除非你希望香港的结果位于列表的顶部/底部/任何位置)。