MySQL技术问询:如何从同一列选取Health & Fitness至Technology间的数据
如何用MySQL查询介于Health & Fitness与Technology之间的数据
嘿,我来帮你搞定这个查询需求!从你给出的数据集来看,每条记录都是ID|分类名称的格式,要筛选出Health & Fitness(对应ID=1)和Technology(对应ID=5)之间的内容,这里有两种实用的方案:
方案1:通过ID筛选(推荐!)
这种方法最稳妥,因为ID是有序的数字,完全不会受分类名称的字符串排序规则影响。我们可以用SUBSTRING_INDEX函数把ID从字符串里拆出来,再做范围判断:
-- 记得把`your_table`换成你的实际表名,`your_column`换成存储这些数据的列名 SELECT * FROM your_table WHERE -- 拆分出ID并转为数字类型 CAST(SUBSTRING_INDEX(your_column, '|', 1) AS UNSIGNED) > 1 AND CAST(SUBSTRING_INDEX(your_column, '|', 1) AS UNSIGNED) < 5;
要是你需要把两端的Health & Fitness和Technology也包含进来,直接把条件改成BETWEEN 1 AND 5就行:
SELECT * FROM your_table WHERE CAST(SUBSTRING_INDEX(your_column, '|', 1) AS UNSIGNED) BETWEEN 1 AND 5;
方案2:通过分类名称筛选(慎用)
如果你的ID顺序和分类名称的字母顺序完全一致,也可以直接用字符串比较来筛选,但要注意:字符串排序会受数据库字符集和排序规则影响,结果可能不如ID筛选稳定。语句如下:
SELECT * FROM your_table WHERE -- 拆分出分类名称部分 SUBSTRING_INDEX(your_column, '|', -1) > 'Health & Fitness' AND SUBSTRING_INDEX(your_column, '|', -1) < 'Technology';
小提示
一定要把语句里的your_table和your_column替换成你实际使用的表名和列名哦!优先选方案1,毕竟数字ID的排序逻辑更清晰可靠。
内容的提问来源于stack exchange,提问作者Saad Ahmed
相关产品推荐
相关产品推荐

