mysql一个字段包含多个数据的关联查询

         最近遇到一种情况,某个申请单有一个主要负责人,多个协作处理人,在这种情况下我们一般的做法是把主要负责人id直接存在申请单据里面,然后新增一个中间表A来存储协作人id(或者全部存储在新增的中间表A里面),但是由于数据库表太多,切协作人id一般只在统计是才有意义,所以直接在申请单据里面新增一个协作人字段存储所有的协作人id。

表结构大致如下:

申请单application:

liable_idAAA
coo_ida,b,c
字段

用户表user:

字段
user_id
user_name

查询可以使用:

select GROUP_CONCAT(b.user_name) as user_name_concat    from application a 
LEFT JOIN user b on FIND_IN_SET(b.user_id,a.coo_id)>0;

直接将存储了多个用户id的coo_id字段的id查找出用户名字方便展示。

也可使用:

select  b.user_name    from application a 
LEFT JOIN user b on FIND_IN_SET(b.user_id,a.coo_id)>0;

查找出多条数据用于统计。


  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的 MySQL 多个数据字段关联抽样对比正确性的 shell 脚本示例: ```bash #!/bin/bash # 数据信息 database="test_db" host="localhost" user="root" password="password" # 抽样数据量 sample_size=1000 # 表1字段值抽样 table1_field="id" table1_sample=$(mysql -h $host -u $user -p$password -D $database -se "SELECT $table1_field FROM table1 ORDER BY RAND() LIMIT $sample_size") # 表2字段值抽样 table2_field="table1_id" table2_sample=$(mysql -h $host -u $user -p$password -D $database -se "SELECT $table2_field FROM table2 WHERE $table2_field IN ($table1_sample) ORDER BY RAND() LIMIT $sample_size") # 表3字段值抽样 table3_field="table2_id" table3_sample=$(mysql -h $host -u $user -p$password -D $database -se "SELECT $table3_field FROM table3 WHERE $table3_field IN ($table2_sample) ORDER BY RAND() LIMIT $sample_size") # 对比抽样数据 if [ "$table1_sample" == "$table2_sample" ] && [ "$table2_sample" == "$table3_sample" ]; then echo "数据关联正确" exit 0 else echo "数据关联错误" exit 1 fi ``` 这个脚本会先从表1中抽取指定字段数据,然后根据这些数据在表2中抽取指定字段数据,最后根据这些数据在表3中抽取指定字段数据。抽样数据量可以根据需要修改。然后,对比这些抽样数据是否一致。如果抽样数据一致,则输出“数据关联正确”并退出脚本,返回值为 0;否则输出“数据关联错误”并退出脚本,返回值为 1。您需要修改脚本中的数据信息、表名和字段名,以适应您的实际情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值