首先显示查询的一部分中的记录,然后显示与第二部分匹配的记录

时间:2011-12-20 16:05:43

标签: php mysql

我有这个问题:

$result = mysql_query("SELECT id,pic0,bio,url FROM ".$table." WHERE id LIKE '%custom%' || ( category IN ('cat1') AND model = 'bmw'");`

我正在循环显示它们:

while ($slice = mysql_fetch_assoc($result)){ }

有没有办法首先显示来自WHERE id LIKE '%custom%'

的记录

显示以下内容后的记录:|| ( category IN ('cat1') AND model = 'bmw'");

Ty给你答案。

这是一个更新的sql代码,我确保自动删除重复项:

(
SELECT 1 AS sort_col, performerid, pic0
FROM `cronjob_reloaded`
WHERE performerid IS NOT NULL
)
UNION (

SELECT 2 AS sort_col, performerid, pic0
FROM `cronjob_reloaded`
WHERE performerid IS NOT NULL
AND category
IN (
'Girl'
)
)
ORDER BY sort_col 

他们不是。第一个选择获得与选择nr二相同的结果,但是mysql显示了所有组合的行。

3 个答案:

答案 0 :(得分:1)

你可以使用联盟

$result = mysql_query("(SELECT 1 as sort_col,id,pic0,bio,url FROM ".$table." WHERE id LIKE '%custom%') UNION  (SELECT 2 as sort_col,id,pic0,bio,url FROM ".$table." WHERE  category IN ('cat1') AND model = 'bmw') order by sort_col";

编辑:删除了有关重复项的警告(根据mysql union docs,dupes被自动删除),添加sort_col以确保保留订单。

答案 1 :(得分:1)

这是怎么回事?

SELECT id,pic0,bio,url 
FROM ".$table." 
WHERE id LIKE '%custom%' || ( category IN ('cat1') AND model = 'bmw'")
ORDER BY (id LIKE '%custom%') DESC;

答案 2 :(得分:0)

我会根据条件将结果放入两个不同的变量中,然后以循环外的任何顺序输出变量。因为可能存在可能满足查询的两个部分的内容,所以条件将是您认为分离的非常重要的内容。因此,如果宝马的结果最后是至关重要的,那么你可以做类似的事情:

//In Loop
$model = $slice['model'];
if($model != bmw){
$displayFirst.= $RecordsToDisplay;
}
else{
$displaySecond.= $RecordsToDisplay;
}
//End Loop
echo $displayFirst;
echo $displaySecond;