mysql多条件关联查询

工作中遇到一些mysql问题,有的需要多条件多表查询等,现在整理出来。
问题(一)如下:

查询出今天办公室人员的订餐人员
qsyz_app_user用户表
userid role


qsyz_shop_order订单表
user_id status date


role 为“办公室”
status 为“支付成功”
日期要求为今天

实现语句

select * from qsyz_app_user a,qsyz_shop_order b where a.userid=b.user_id and b.order_status='支付成功' and b.create_date='2017-12-25 16:05:05';

按日期模糊查询出结果
select a.nickname  from qsyz_app_user a,qsyz_shop_order b
where a.userid=b.user_id 
and a.role='办公室' 
and b.order_status='支付成功' 
and b.create_date like '%2017-12-25%';

mysql like的写法

like concat('%',#{param},'%')  或者 like '%${param}%' ,推荐使用前者,可以避免sql注入。

这里写图片描述

问题(二)如下:

从版本表中按照手机类型,找出版本号最大的版本


版本表
mysql> select * from qsyz_app_version;
+-----------+--------------+-------------+--------------+-------------+--------------+----------------------------------------------------+------------+
| id        | version_name | version_num | version_size | create_time | version_text | down_url                                           | phone_type |
+-----------+--------------+-------------+--------------+-------------+--------------+----------------------------------------------------+------------+
| 440289813 | 1.1.2        |    20171205 |            0 | 2017-12-05  | 56           | http://192.168.1.101:8080/images/1.JPEG            | android    |
| 440378169 | 1.1.2        |    20171109 |            0 | 2017-12-05  | 565          | http://192.168.1.101:8080/images/2.JPEG            | android    |
| 749696543 | 1.1.0        |           1 |            0 | 2017-10-23  | ghkfadjghkl  | http://192.168.2.112:8080/images/app-debug.apk     | android    |
| 750259190 | 21           |          23 |            0 | 2017-10-23  | 家居空间     | http://192.168.2.112:8080/images/ConstantUtil.java | android    |
+-----------+--------------+-------------+--------------+-------------+--------------+----------------------------------------------------+------------+
4 rows in set

实现语句

select * from qsyz_app_version where version_num=(select max(version_num)from qsyz_app_version WHERE phone_type='android
');

这里写图片描述

问题(三)如下:

从订单详情表中查询出用户的订单详情,按照倒叙排列

订单详情表:

这里写图片描述

实现语句

SELECT * FROM qsyz_wallet_detail WHERE userId=#{userId} order by tradeDate DESC

这里写图片描述

问题(四)如下:

情景:返回店铺的评论列表里,要求实现分页。
因为店铺评论列表是个动态的,每时每刻都有可能有人在评论,所以如果安装页数返回的话有可能会使数据重复或数据漏掉。
方法:传入一个评论id,下次查询的时候,查询这个id后面的十条数据(id要有序,不然很麻烦)

例子
这里写图片描述

实现语句

mysql> select id,name from user where id>'1' order by id asc limit 2;

这里写图片描述

  • 10
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
引用\[1\]:阿里巴巴的代码规范中建议不执行三张表以上的多表联合查询,因为在表数据量大且没有索引的情况下,多表联合查询可能会导致数据量非常大,从而降低SQL执行效率。他们更建议多次进行单表查询,然后在service中进行参数拼接。\[1\] 引用\[2\]:UNION查询是将多个SELECT查询的结果合并成一个查询结果的方法。在客户端查询会话结束时,临时表会被自动删除,保证数据库整洁高效。使用UNION时,需要确保所有SELECT语句中的字段数目相同。\[2\] 引用\[3\]:内连接(INNER JOIN)是一种等值连接,需要指定等值连接条件。在MySQL中,CROSS JOIN和INNER JOIN被划分在一起。\[3\] 问题: MySQL多表关联查询的优势是什么? 回答: MySQL多表关联查询的优势在于可以通过联合多个表的数据来获取更全面的信息。通过多表关联查询,可以避免进行多次单表查询,从而减少了数据库的访问次数,提高了查询效率。此外,多表关联查询还可以通过联合多个表的字段来进行数据的筛选和排序,使得查询结果更加灵活和准确。然而,需要注意的是,在表数据量大且没有索引的情况下,多表联合查询可能会导致数据量非常大,从而降低SQL执行效率。因此,在实际应用中,需要根据具体情况来选择是否使用多表关联查询。\[1\] #### 引用[.reference_title] - *1* [MySQL 多次单表查询和多表联合查询的优缺点分析-Fun言](https://blog.csdn.net/weixin_29602351/article/details/116106693)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [MySQL多表查询优化](https://blog.csdn.net/weixin_40000999/article/details/111752075)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Mysql 多表联合查询效率分析及优化](https://blog.csdn.net/weixin_28785681/article/details/113713493)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值