[MySQL]使用查出来的使用逗号分隔的字符串“1,2,3”,作为另一个查询语句in后边的查询条件。

情景描述:要求是查找指定班级对应的课程。表的结构是,班级表class中的一个字段course_ids用于存储course表的id。
我的思路很简单,select查找course表,然后使用in嵌套一个子查询查询出所有的id。
所以第一次的代码是这样的:

SELECT
*
FROM
	course cou
WHERE
	cou.id IN (
		SELECT
			c.course_ids
		FROM
			class c
		WHERE
			c.product_id = '1'
	);

结果确实只查找出来id=1的那一条数据。
原因是:在mysql的in里边如果是字符串的话,会自动转换成int,从其他地方看的。

修改后的代码:

SELECT
	*
	FROM
		course cou
	WHERE
		find_in_set(cou.id,(
			SELECT
				c.course_ids
			FROM
				class c
			WHERE
				c.product_id = '1'
		));

这样子得到的结果就是对的。

就是因为使用了find_in_set函数,关于这个函数自己搜吧。(!-!)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值