查询总是返回某一行

时间:2011-09-30 10:00:47

标签: php mysql

你能建议一个总是会执行条件的查询吗?说:

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个成员,那么有什么办法吗?

1 个答案:

答案 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

...其中X15 - N,其中N是您的第一个查询返回的行数。

当然,你必须以某种随机方式将它们组合起来(除非你希望香港的结果位于列表的顶部/底部/任何位置)。