MariaDB(MySQL)的常用命令2 【对检索的数据进行排序】【过滤数据】【高级数据过滤】

第5章 对检索的数据进行排序

数据排列

mysql> SELECT * FROM students;
+----+----------+--------+-----+-------------+
| id | name | sex | age | tel |
+----+----------+--------+-----+-------------+
| 2 | ?? | mela | 27 | 15766699975 |
| 3 | ?? | femela | 18 | 15766699914 |
| 5 | xiaoming | femela | 18 | 15766699912 |
| 6 | xiaoming | femela | 18 | 15766699901 |
| 7 | xiaoming | femela | 19 | 15766699900 |
+----+----------+--------+-----+-------------+
5 rows in set (0.00 sec)

对students 表中的age字段,进行排序(从小到大)(只显示age字段)

mysql> SELECT age FROM students ORDER BY age;
+-----+
| age |
+-----+
| 18 |
| 18 |
| 18 |
| 19 |
| 27 |
+-----+
5 rows in set (0.00 sec)

当然你也可以

SELECT * FROM students ORDER BY age;

多行为 标准排列(下面是 先以name排序,若name一样再用age )

SELECT id,name,age FROM students ORDER BY name,age;

指定排序方向 从小到大(ASC 默认可以省略) OR 从大到小 (DESC)

SELECT * FROM students ORDER BY age DESC;
# 先按照age从大到小排序,若age相同则用name排序。
SELECT * FROM students ORDER BY age DESC, name;

提示:区分大小写, 和排序次序。
字典排序中, 默认大小写一样


第6章 过滤数据

where子句

#显示students中 age=18的人的所有信息
SELECT * FROM students WHERE age = 18;

where子句操作符

=====================================================
操作符 说明
= 相等
<> 不等于
!= 不等于
< 小于
<= 小于等于
> 大于
>= 大于等于
BETWEEN2个特定值之间
====================================================
# age 小于20
SELECT * FROM students WHERE age<20;
# <>!= 都是不等于 的意思
SELECT * FROM students WHERE age <> 18;
SELECT * FROM students WHERE age != 18;
# 查找区间值
SELECT * FROM students WHERE age BETWEEN 19 AND 27;
# 查找 >18 <27的值
SELECT * FROM students WHERE age > 18 AND age < 27;
# 查找出为空的值
SELECT * FROM students WHERE age IS NULL;

第7章 高级数据过滤

  • 组合where子句

    • AND操作符
      SELECT * FROM students WHERE age > 18 AND age < 27;

    • OR操作符
      SELECT * FROM students WHERE age = 18 OR age = 27;

    -理解优先级顺序

    //AND > OR
    `SELECT * FROM students WHERE id = 1 OR id = 2 AND age >= 27;`
    //为了更加清晰,用括号表示
    `SELECT * FROM students WHERE (id = 1 OR id = 2) AND age >= 27;`
  • IN操作符(用来指定一组条件,只要匹配任意 一个条件即可。 )

    //tel(电话号码)为15711111111 和15700000000 的数据全都合格
    SELECT * FROM students WHERE tel IN (15711111111, 15700000000) ORDER BY age;

    //与上面结果一样
    SELECT * FROM students WHERE tel=15711111111 OR tel=15700000000 ORDER BY age;

  • NOT操作符

    //显示 age 不是18 ,不是27 。 的数据(按照id默认(从小到大)排序)
    SELECT * FROM students WHERE age NOT IN (18, 27) ORDER BY id;


第17章 创建联合查询

  • UNION 不同table 中,重读的数据不会累加统计
SELECT COUNT(*) FROM entry_record WHERE entry_record.time_stamp BETWEEN 1530432000 AND 1530858872
UNION
SELECT COUNT(*) FROM entry_record_upload WHERE entry_record_upload.time_stamp BETWEEN 1530432000 AND 1530858872
  • UNION ALL 不同table 中,重读的数据,累加统计
SELECT COUNT(*) FROM entry_record WHERE entry_record.time_stamp BETWEEN 1530432000 AND 1530858872
UNION ALL
SELECT COUNT(*) FROM entry_record_upload WHERE entry_record_upload.time_stamp BETWEEN 1530432000 AND 1530858872

返回2个值, 再Poco 中返回vector 类型对象,

仔细想想 好像还真的没有比这更好的,数量可以不限制,因为Poco DB 中返回数据集,都是vector<*>

posted @   scott_h  阅读(313)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示