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根据重复项应该删除