需求 A 字段中 去 B字段找是否存在,B字段为,隔开,不存在找第一个赋值
SELECT ws.sample_id ,ws.ex_warehouse_user_id,wss.test_user_id, if(POSITION(',' IN wss.test_user_id)= 0,wss.test_user_id,LEFT(wss.test_user_id, POSITION(',' IN wss.test_user_id) - 1)) from wt_sample_split wss LEFT JOIN wt_sample ws on wss.sample_id = ws.sample_id LEFT JOIN wt_entrust we on we.wt_id = ws.wt_id where we.wt_status != 99 and ws.ex_warehouse_status = 2 and find_in_set(ws.ex_warehouse_user_id,wss.test_user_id) = 0
其他可以忽略,主要解释函数的使用
POSITION(',' IN wss.test_user_id) //在一个字段中查询','的下标,类似于indexof的功能,
LEFT(wss.test_user_id, POSITION(',' IN wss.test_user_id) - 1)) //从左侧开始以下标切割值
find_in_set(ws.ex_warehouse_user_id,wss.test_user_id) = 0 // find_in_set(A,B) A在B中的第几个下标,这个 = 0 是需求找不存在的情况