MySql 拼接查询 CONCAT

6 篇文章 0 订阅

CONCAT的用法就是查询的时候拼接多个字段为一个字段,比较常用的就是地址拼接,比如:

//拼接用户地址的省市区、详细地址、门牌号
SELECT CONCAT(province,city,district,address,house_no) AS addre FROM user_address

在这里插入图片描述

还有一种情况就是我们需要搜索查询用户地址,但是又不想过多的使用or去查询,这个时候子查询+拼接就能实现我们的需求,SQL:

SELECT * FROM (SELECT CONCAT(province,city,district,address,house_no) AS addre FROM yw_user_address) AS a WHERE a.addre LIKE "%大夫%";

在这里插入图片描述
子查询必须要加别名,不加别名sql会报错。

使用拼接的方式模糊搜索地址关联用户
 SELECT u.*,CONCAT(a.province,a.city,a.district,a.address,a.house_no) FROM `user_address` `a` INNER JOIN `user` `u` ON `u`.`id`=`a`.`user_id`
 SELECT * FROM ( SELECT u.*,CONCAT(a.province,a.city,a.district,a.address,a.house_no) AS addre FROM `user_address` `a` INNER JOIN `user` `u` ON `u`.`id`=`a`.`user_id`) addre WHERE  `addre`.`addre` LIKE '%搜索地址%'

在这里插入图片描述
在这里插入图片描述

我经常用的是TP6框架,所以我这里在加一个项目中的运用方式

//获取子查询sql
$sql = UserAddress::field("u.*,CONCAT(a.province,a.city,a.district,a.address,a.house_no) as addre")->alias("a")->join("user u","u.id=a.user_id")->buildSql();
//查询搜索的结果
$sql = Db::table($sql." addre")->where("addre.addre","like","%搜索地址%")->fetchSql(true)->select();

fetchSql方法是打印sql,true的时候会返回sql语句,false时会返回查询结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值