我有这个问题:
$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显示了所有组合的行。
答案 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;