mysql 联表查询后,将某个字段的特定值排序在最前面
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql 联表查询后,将某个字段的特定值排序在最前面相关的知识,希望对你有一定的参考价值。
比如我有两个表a,b,都有uid字段,联表查询时用 on a.uid= b.uid ,但在排序时我想要uid= =10 这个些数据排在最前面,我在 order by 用了 fi'eld(uid,10) 报错,如何解决
我再说详细点,b表的uid是主键,是唯一的,而a表的uid的值是可以重复的,比如我查询a表中的uid值当为1到20时,我要uid=10的时候排序在最前面,非10的排在后面
$sql = "SELECT meta_value FROM wp_postmeta WHERE meta_key = 'img-link' and post_id =1";
$result=mysql_query($sql);
while ($row = mysqli_fetch_assoc($result))//用myql_fetch_assoc函数取值,可以确保多行数据时能循环输出,mysql_fetch_array只能取得最前面的一行数据
echo $row['meta_value'];//输出你想要的字段值
参考技术A 最后加上 ORDER BY CASE WHEN (uid=10) THEN 1 ELSE 0 END DESC;
MySql排序查询将null放在最后的解决办法(默认会在最前,当成最小值处理)
一.问题描述
MySQL中使用order by对字段进行排序的时候,如果是降序排序,那字段值为null的记录会排在最后,但是如果是升序排序,那字段为null的记录会排在最前面。
目前碰到一个需求,就是根据字段进行升序排序的时候,字段值为null也需要放在最后,这边可以通过下面方法进行处理;
二.问题处理
假设当前对 t_user 进行查询,并通过status字段进行升序排序,t_user表中的数据如下:
处理方法一:
SELECT * FROM t_user ORDER BY -STATUS DESC
结果:
处理方法二:
SELECT * FROM t_user ORDER BY ISNULL(STATUS), STATUS ASC
结果:
处理方法三:
SELECT * FROM t_user ORDER BY STATUS IS NULL, STATUS ASC
结果:
以上是关于mysql 联表查询后,将某个字段的特定值排序在最前面的主要内容,如果未能解决你的问题,请参考以下文章
MYSQL数据库表排序规则不一致导致联表查询,索引不起作用问题