在我的应用程序中有一个类似的表,我试图忽略“applefritter\u demo\u rasberry”项,因为它只是具有相同子字符串的所有其他项的总和。
我正在尝试编写一个mysql查询(不是Maven)来获取除“applefritter\u demo\u rasberry”之外的所有值,它只不过是这些项的父项并保存总数。
我已经用这篇文章查看了子字符串,但是我不能理解这背后的逻辑。有人能提出一个办法吗。
ID Recipe Value
164686 applefritter_demo_rasberry 140
164686 applefritter_demo_rasberry_cake 40
164686 applefritter_demo_rasberry_pudding 20
164686 applefritter_demo_rasberry_pie 10
164686 applefritter_demo_rasberry_bread 40
164686 applefritter_demo_rasberry_candy 20
164686 applefritter_demo_rasberry_juice 10
编辑:
只是为了让问题更清楚一点,表中填充了一个应用程序,该应用程序还插入了父菜谱的总菜谱和子菜谱的总菜谱。我需要确定表中所有配方的总数,表中还包含独立配方(无父配方),如“ovenfresh\u frenchbread”,在总计算期间,我希望忽略所有这些父项,它们最终成为子项的子串。
3条答案
按热度按时间wko9yo5t1#
可以使用like和not like子句按字符序列进行筛选:
like子句确定字符串是否与指定的模式匹配。模式可以包括普通字符和通配符。
not like反转比较,验证字符串是否与指定的模式匹配。
例如:
1选择姓名以字母“c”开头的所有人员:
2选择姓名第二个字母为“c”的所有人员:
三。选择姓名中顺序为“clau”且与其职位无关的所有人员:
4选择姓名不以字母“c”开头的所有人员:
你的解决方案
回到您的问题,如果我们使用如下所示的not like,则不会返回任何结果,因为您列中的所有项都以以下顺序开始:
对于您的问题,解决方法如下:
希望这有帮助!
b0zn9rqh2#
据我所知,你想要这样的东西:
我不完全清楚子查询中的匹配逻辑是什么,它是否只基于
id
或者字符串匹配。szqfcxe23#
考虑添加另一列
Parent
与共享id一样,持有父项的id也不清楚哪一行具有哪一个角色--是父项还是子项(也就是说,除了Recipe
这对于保证完整性不是很方便,因为在约束中很难(如果不是不可能的话)使用它。像字符串操作那样查询效率较低LIKE
或者substring()
需要参与。另外,共享id逻辑和子字符串逻辑同时存在是多余的。如果他们互相矛盾怎么办?)这样重新设计很容易查询父对象的直接子对象。只需选择
Parent
就是你要找的那个,例如:想一想如何填满
Value
除非你已经这么做了,否则父母会自动地把孩子的总数加起来,比如通过触发器。否则这可能会变得不一致。或者,只将值存储在行中,不包含任何子级,并通过子级的值之和计算父级的值(不过,如果涉及到多个层次结构,这可能会让人毛骨悚然。)