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操作「数据查询条件20211223

mysql 查询时 按照某个字段计算后的值 排序?

MYSQL数据库表排序规则不一致导致联表查询,索引不起作用问题

MySql排序查询将null放在最后的解决办法

MySQL 左连接时,查询条件查询某个字段为空或者为特定值解决方案

MySQL 左连接时,查询条件查询某个字段为空或者为特定值解决方案