繁体   English   中英

SQL查询划分字段

[英]SQL Query divide a field

数据库实例

我想为每个通过代码标识的商业广告获取与他关联的账单数量(法语:制造)。

例如,在这里,对于数据库的这一部分,我想拥有类似的东西:R08:22; R087:19; R11:3; R00:3; R062:1; R026:1;

商业代码以“ R”开头,后跟几个数字,如果账单与多个商业广告相关联,则“ |” 分隔代码。 顺便说一下,大多数账单只与一个商业广告有关。

我的问题是只能使用SQL来做到这一点。 如果太复杂了,我将用PHP来完成。

我希望我的问题是可以理解的,并且您会知道如何帮助我。

另一个数据示例:

R015        15040205
R012        14250123
R012|R038   14250123
R015|R012   14250123
R005        14250123

我想返回一个查询:

R005        1
R038        1
R015        2
R012        3

实际上,我想查询一个查询每个代码出现次数的查询。 第二个数据没关系

如果您最多有两个代码(如示例数据中所示),则可以使用substring_index()

select code, count(*)
from ((select substring_index(code_commercial, '|', 1) as code
       from t
      ) union all
      (select substring_index(code_commercial, '|', -1)
       from t
       where code_commercial like '%|%'
      )
     ) c
group by code;

更为重要的一点是,您的数据模型确实非常糟糕。 您应该修复它。 SQL并非设计为在单个列中存储多个值,也不设计为使用字符串来存储此类数据。

您需要一个联结表,每个代码都有单独的行。 这样,您的查询将更易于编写和运行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM