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

Php 首先显示查询的一部分中的记录,然后显示与第二部分匹配的记录,php,mysql,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像“%custom%” 在显示以

我有一个疑问:

$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像“%custom%”

在显示以下记录之后:
| |(类别为('cat1'),型号为'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 
第一个select与第二个select得到的结果相同,但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";
编辑:删除了关于重复的警告(根据mysql union docs,重复会自动删除),添加了排序列以确保保留顺序。

这是怎么回事

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;

union真的能保证结果的顺序吗?Ty非常感谢你的回答,这很好。一个问题。你确定重复项吗?它们是自动删除的吗?我用sql查询测试更新了这个问题。Ty根据重复项应该删除