mysql查询某个筛选条件下的n条多个分类数据的每个分类最新的数据

本文介绍了一种SQL技巧,用于从数据库中选取特定条件下(如poster_id为'h1')的所有client_id的最新报价。通过使用子查询和GROUP BY语句结合MAX函数,可以有效地获取每个客户最新的交易记录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.表结构/和表创建sql

在这里插入图片描述CREATE TABLEtest_inquiry_record(idint(11) NOT NULL AUTO_INCREMENT,poster_idvarchar(30) NOT NULL COMMENT '挂单号',client_idvarchar(30) NOT NULL COMMENT '交易商id',pricedecimal(19,2) DEFAULT NULL COMMENT '报价',statusvarchar(1) NOT NULL COMMENT '询价状态',origin_record_idvarchar(30) NOT NULL COMMENT '询价单id',oper_timetimestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '操作时间',create_timetimestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '创建时间', PRIMARY KEY (id`)
) ENGINE=InnoDB AUTO_INCREMENT=59 DEFAULT CHARSET=utf8

2.查询要求

poster_id=h1的所有client_id的最新报价

3.查询语句

select * from test_inquiry_record
where create_time
in(select max(create_time) create_time from test_inquiry_record t
group by poster_id,client_id)
order by client_id;

4.结果展示

在这里插入图片描述

在PHP中结合PDO和MySQL执行一个多条件筛选的学生表数据查询,你可以按照以下步骤进行: 1. **连接数据库**: 首先,你需要创建一个PDO实例来连接到MySQL数据库。例如: ```php $host = 'localhost'; $dbname = 'your_database_name'; $username = 'your_username'; $password = 'your_password'; try { $pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch(PDOException $e) { echo "Connection failed: " . $e->getMessage(); } ``` 2. **准备查询语句**: 使用预处理语句(PreparedStatement),可以避免SQL注入。假设你有一个学生表(`students`),你想按姓名和成绩筛选: ```php $stmt = $pdo->prepare('SELECT * FROM students WHERE name LIKE :name AND score >= :min_score'); ``` 这里`:name` 和 `:min_score` 是占位符,将在之后绑定具体的值。 3. **绑定参数**: 对每个条件设置变量并绑定到查询中: ```php $nameFilter = '%John%'; // 搜索姓氏包含"John"的学生 $minScore = 80; // 最低分数 $stmt->bindParam(':name', $nameFilter, PDO::PARAM_STR); $stmt->bindParam(':min_score', $minScore, PDO::PARAM_INT); ``` 4. **执行查询**: ```php $stmt->execute(); ``` 5. **获取结果**: 使用`fetch()`或`fetchAll()`等方法从查询结果集中获取数据: ```php $students = $stmt->fetchAll(PDO::FETCH_ASSOC); ``` 6. **处理结果**: 现在你可以遍历 `$students` 数组,显示符合条件的学生信息。 7. **释放资源**: 当完成查询后记得关闭游标 (`$stmt = null`) 和断开数据库连接 (`unset($pdo)` 或 `$pdo = null`) 示例完整代码: ```php // ... (连接数据库部分) $nameFilter = '%John%'; $minScore = 80; $stmt = $pdo->prepare('SELECT * FROM students WHERE name LIKE :name AND score >= :min_score'); $stmt->bindParam(':name', $nameFilter, PDO::PARAM_STR); $stmt->bindParam(':min_score', $minScore, PDO::PARAM_INT); $stmt->execute(); $students = $stmt->fetchAll(PDO::FETCH_ASSOC); foreach ($students as $student) { echo "Name: {$student['name']} | Score: {$student['score']}<br/>"; } // ... (释放资源部分) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值