mysql语句排序求救。

ylmdy ylmdy 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
A表:
CREATE TABLE `a` (
`aid` int(11) NOT NULL,
`astate` int(1) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `a` (`aid`, `astate`) VALUES
(1, 1),
(2, 1),
(3, 1);


B表:
CREATE TABLE `b` (
`bid` int(11) NOT NULL,
`bfield` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `b` (`bid`, `bfield`) VALUES
(1, 'f1 '),
(2, 'f2 '),
(3, 'f3 '),
(4, 'f4 ');


C表:
CREATE TABLE `c` (
`cid` int(11) NOT NULL,
`aid` int(11) NOT NULL,
`bid` int(11) NOT NULL,
`cvalue` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `c` (`cid`, `aid`, `bid`, `cvalue`) VALUES
(1, 1, 1, 'v11 '),
(2, 1, 2, 'v12 '),
(3, 1, 3, 'v13 '),
(4, 2, 1, 'v31 '),
(5, 2, 2, 'v22 '),
(6, 3, 1, 'v21 ');

我现在的mysql语句:
SELECT a.aid, b.bid,b.bfield,c.cvalue
FROM (a, b )
LEFT JOIN c
ON (a.aid = c.aid AND b.bid = c.bid)
ORDER BY a.aid ASC, b.bid ASC

得到的结果是:
aid bid bfield cvalue
1 1 "f1" "v11"
1 2 "f2" "v12"
1 3 "f3" "v13"
1 4 "f4" NULL
2 1 "f1" "v31"
2 2 "f2" "v22"
2 3 "f3" NULL
2 4 "f4" NULL
3 1 "f1" "v21"
3 2 "f2" NULL
3 3 "f3" NULL
3 4 "f4" NULL


然后希望得出来的数据结构是:
aid bid bfield cvalue
1 1 "f1" "v11"
1 2 "f2" "v12"
1 3 "f3" "v13"
1 4 "f4" NULL
3 1 "f1" "v21"
3 2 "f2" NULL
3 3 "f3" NULL
3 4 "f4" NULL
2 1 "f1" "v31"
2 2 "f2" "v22"
2 3 "f3" NULL
2 4 "f4" NULL

注意红色部分。 主要是想根据不同aid的bfield的相同项目(比如f1)排序,然后保持相同的aid在一起并且cvalue的值能按序排列
哪位仁兄帮帮忙!
...全文

相关推荐

MySQL中select语句使用order按行排序

本文介绍MySQL数据库中执行select查询语句,并对查询的结果使用order by 子句进行排序。 再来回顾一下SQL语句中的select语句的语法: Select 语句的基本语法: Select <列的集合> from <表名> where <条件> order by <排序字段和方式> 如果要对查询结果按某个字段排序,则要使用order by 子句,如下: select * from <表名> order by <字段名称> <排序方式> 下面来看两个例子,第一个查询test表中所有数据,并按t_id正序排列;第二个查询与第一个相反,是逆序排列。 mysql> select t_id,

weixin_38677244

mysql自定义排序顺序语句

mysql 自定义排序顺序 实例如:在sql语句中加入ORDER BY FIELD(status,3,4,0,2,1)语句可定义排序顺序 说明:status为排序字段,后面为该字段的相关值 您可能感兴趣的文章:SQL 按特定字段值排序SQL字符型字段按数字型字段排序实现方法MySQL中按照多字段排序及问题解决MySQL 按指定字段自定义列表排序的实现

weixin_38638002

MySQL对中文进行排序详解及实例

MySQL对中文进行排序详解 MySQL默认只支持对日期、时间和英文字符串进行排序,如果对中文进行order by很可能得不到想要的结果,如下面的查询并不会按我们所想的根据汉字的拼音进行排序: SELECT * from user order by user_name; 如果相对中文进行排序的话,可以使用CONVERT(coloum_name USING GBK)将中文转为GBK编码形式,然后再排序,就可以实现根据汉子的拼音进行排序: SELECT * from user order by CONVERT(user_name USING GBK); 感谢阅读,希望能帮助到大家,谢谢大家对本

weixin_38692666

MySQL利用索引优化ORDER BY排序语句的方法

创建表&创建索引 create table tbl1 ( id int unique, sname varchar(50), index tbl1_index_sname(sname desc) ); 在已有的表创建索引语法 create [unique|fulltext|spatial] index 索引名 on 表名(字段名 [长度] [asc|desc]); MySQL也能利用索引来快速地执行ORDER BY和GROUP BY语句的排序和分组操作。 通过索引优化来实现MySQL的ORDER BY语句优化: 1、ORDER BY的索引优化 如果一个SQL语句形如: SELECT

weixin_38674763

Mysql利用group by分组排序

主要为大家详细介绍了Mysql利用group by分组排序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

weixin_38702047
评论 14
收藏 已收藏
分享
返回顶部
ylmdy
MySQL 57,062 成员 56,759 内容