MySQL LIKE 使用 % 符号形式连接

标签 mysql

我有 2 个简单的表:

表a:

+====+======+
| ID | Name |
+====+======+
| 1  | Alex |
| 2  | Steve|
+===========+

表 b:

+======+======+
| ID_B |Number|
+======+======+
| 1-20 | 20   |
| 1-21 | 40   |
+=============+

我想使用这个语法:

SELECT `Name`,sum(`Number`) From `a` Join `b` ON `a`.`ID` LIKE `b`.`ID_B`+'%'

我对Mysql不是很了解,我是新手。 我想将表a连接到表b,并且在表b中Number会自动计算所有WHERE ID表a> 与 b .ID_B %

相同

最后我的回答是“Alex have 60 Number”

最佳答案

你需要:

  • 交换 like 运算符中 a.idbid_b 的位置(两个值中较长的应该在左边所以它的剩余部分匹配右边的通配符)

  • a.id 转换为字符串并将其连接到 %,您可以使用 concat 完成此操作。即使您有引用,+ 运算符也不会在 MySql 中连接字符串

  • 最好添加一个group by

看起来像这样:

select   name, sum(number) 
from     a 
join     b 
      on b.b_id like concat(a.id, '%') 
group by name

根据您的情况,您可能希望在 % 之前添加连字符:

      on b.b_id like concat(a.id, '-%') 

关于MySQL LIKE 使用 % 符号形式连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44470535/

相关文章:

mysql - 用于搜索第一列和第三列的 3 列索引?

php - 使用 php 和 javascript 从弹出窗口传递多个 MySQL 结果集

mysql - 在 MySQL 中按引擎显示表

php - codeigniter:如何将数组的值放入特定的表列中?

java - 如何在 SWT 中按列对表进行排序

mysql - IntegrityError 与 Django m2m 关系

php - Mysql Replace 在 PHP 中不能正常工作

mysql - 在重复键更新中使用不同列插入选择

mysql - 如何查看任何特定 mysql 查询使用的 CPU 和内存?

java - 将 war 部署到 Tomcat 时生成数据库