MySQL查询:排除含相同子串的汇总行applefritter_demo_rasberry
解决方案
没问题,我来帮你搞定这个MySQL查询的问题!根据你描述的场景——applefritter_demo_rasberry是汇总父行,需要排除它但保留相关的子条目,我给你分几种常见情况提供对应的SQL语句:
场景1:仅排除精确匹配的汇总行
如果你的汇总行的Recipe字段精确等于applefritter_demo_rasberry,而其他子条目不管是什么格式(只要不是这个精确值)都需要保留,直接用不等于判断即可:
SELECT ID, Recipe, Value FROM your_table_name -- 替换成你的实际表名 WHERE Recipe != 'applefritter_demo_rasberry';
这个语句会返回所有Recipe不是该汇总值的行,简单高效。
场景2:只保留相关子条目(排除汇总行+过滤不相关行)
如果你的表中还有其他和applefritter_demo_rasberry无关的行,你想只保留属于这个组的子条目(排除汇总父行),可以结合LIKE来筛选相关行,再排除汇总值:
SELECT ID, Recipe, Value FROM your_table_name WHERE Recipe LIKE 'applefritter_demo_rasberry%' -- 匹配以汇总字符串开头的子条目 AND Recipe != 'applefritter_demo_rasberry'; -- 排除精确的汇总行
补充说明:
- 如果子条目的
Recipe是包含汇总字符串在中间或结尾(比如xxx_applefritter_demo_rasberry),把LIKE的条件改成'%applefritter_demo_rasberry%'即可。 - 如果你不确定子条目的格式,可以先执行下面的查询查看所有相关的
Recipe值,确认汇总行和子行的关系:
SELECT DISTINCT Recipe FROM your_table_name WHERE Recipe LIKE '%applefritter_demo_rasberry%';
场景3:更严谨的排除(避免大小写问题)
如果你的MySQL数据库区分大小写,而Recipe字段可能存在大小写变体(比如AppleFritter_Demo_Rasberry),可以用LOWER()函数统一转换后判断:
SELECT ID, Recipe, Value FROM your_table_name WHERE LOWER(Recipe) != 'applefritter_demo_rasberry';
或者结合LIKE使用LOWER():
SELECT ID, Recipe, Value FROM your_table_name WHERE LOWER(Recipe) LIKE 'applefritter_demo_rasberry%' AND LOWER(Recipe) != 'applefritter_demo_rasberry';
内容的提问来源于stack exchange,提问作者Sudheej
相关产品推荐
相关产品推荐

