【问题标题】:Count the number of occurrences of a string across multiple attributes in MySQL Database How计算MySQL数据库中多个属性中字符串的出现次数如何
【发布时间】:2015-04-19 08:36:55
【问题描述】:

如何计算 MySQL 数据库中表的多个属性(在我目前的情况下,我有 5 个属性)中字符串的出现次数?我可以使用 MySQL 查询(y/ies)吗?

属性可能有 NULL 值,如果这在计数时意味着什么。

另外,我在客户端使用 PHP,如果 MySQL 不是找到此计数的更好方法,我可以使用它,但我想知道如何使用 MySQL 来完成。

我看到了这个post,它与我想要做的类似,但这个解决方案仅适用于对一个属性/列上的字符串进行计数。我需要计算我的所有属性/列中每个字符串的总出现次数(例如:5)。

【问题讨论】:

  • 听起来您需要重新设计数据库。也许有一张专门用于id, attribute 的桌子。
  • Table_name(id, attr_1, attr_2, attr_3, attr_4, attr_5) 是我现在拥有的。
  • 从你的问题看来,任何一个值都可能存在,那么为什么你将属性分成五列?
  • 它们是用户可以从 HTML 表单中添加字符串的不同字段。总共有五个可能的字段。用户必须在至少一个字段 (attr_1) 中放置一个字符串(例如:带有下拉菜单)。其他四个 attr 字段可能为 NULL(或包含空字符串,尚未弄清楚这些细节)。
  • 这只是一个不寻常的数据库结构。在我看来,这些列应该更具体。否则,仅使用一列作为属性和多行将有意义,这将使此查询更加简单。

标签: mysql


【解决方案1】:
declare @string nvarchar(255) = "string" --String to search for

select COUNT(t1.attr_1) + COUNT(t2.attr_2) + COUNT(t3.attr_3) + COUNT(t4.attr_4) + COUNT(t5.attr_5)
from Table_name t
join Table_name t1 on t1.id = t.id
join Table_name t2 on t2.id = t.id
join Table_name t3 on t3.id = t.id
join Table_name t4 on t4.id = t.id
join Table_name t5 on t5.id = t.id
where t1.attr_1 = @string
and t2.attr_2 = @string
and t2.attr_3 = @string
and t2.attr_4 = @string
and t2.attr_5 = @string

【讨论】:

  • 此查询计算@string 在 5 列中出现的总数。也许我没有正确理解你的问题。你能提供一个你正在尝试做什么的例子吗?
  • 是的,你没有正确理解我的问题,但德文在上面的评论线程中让我找到了我的解决方案。无论如何,谢谢!
猜你喜欢
  • 1970-01-01
  • 2019-06-03
  • 2021-02-20
  • 1970-01-01
  • 2012-10-03
  • 2012-12-18
  • 1970-01-01
  • 2013-02-24
  • 2010-09-21
相关资源
最近更新 更多