我有这样的查询:
$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'");
谢谢你的回答。
这是一个更新的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
事实并非如此。第一次选择得到的结果与第二次选择得到的结果相同,但是mysql显示给我的是所有行组合。
可以使用union
$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";
edit:删除了关于重复的警告(根据mysql联合文档,重复会自动删除),添加了sort_col以确保保持顺序
这个怎么样?
SELECT id,pic0,bio,url
FROM ".$table."
WHERE id LIKE '%custom%' || ( category IN ('cat1') AND model = 'bmw'")
ORDER BY (id LIKE '%custom%') DESC;
我会根据条件将结果放入两个不同的变量中,然后在循环外以您喜欢的顺序输出变量。因为可能存在可以同时满足查询的两个部分的内容,所以条件语句将是您认为真正需要分离的重要内容。因此,如果bmw结果排在最后是至关重要的,你可以这样做:
//In Loop
$model = $slice['model'];
if($model != bmw){
$displayFirst.= $RecordsToDisplay;
}
else{
$displaySecond.= $RecordsToDisplay;
}
//End Loop
echo $displayFirst;
echo $displaySecond;