繁体   English   中英

如何从数据库中过滤这些数据?

[英]How can I filter this data from my database?

我有一个带有名称和类型字段的表。 类型字段以这种方式包含人的音乐品味:

“摇滚;流行;金属;舞蹈”(varchar)

我需要根据这些人的音乐品味来生成一个excel列表。

例如:

  1. 与Rock中的每个人列出一份清单; 金属; 舞蹈
  2. 与岩石中的每个人同在; 金属; 发呆
  3. 另一个与摇滚(Only Rock)
  4. 等等...

每个用户只能在一个列表中。 我需要此列表才能将其导入新闻通讯软件。 每种类型都是一个邮件列表。

我需要执行各种组合,然后在获取结果时创建列表。 我想知道哪种是最好,最快的方法。 可以使用php脚本甚至SQL。

附注: 我需要其他人创建的旧数据库中的数据。 我同意,这是一种糟糕的存储方式。

在我看来,您可以运行以下简单查询:

SELECT * FROM table_name ORDER BY music_taste_field

然后在music_taste_field的值更改时拆分结果。 您可以手动执行此操作或使用PHP。

而且,正如其他人所评论的那样,这是存储音乐偏好的一种糟糕方法。

还有另一个错误的数据库设计(今天是一个类似的问题)。

首先,对于将​​来的任何操作,数据库中的所有枚举应为单独的关系结构(例如表)。 这样,使用索引字段创建这些列表将非常容易。

现在,您将调用字符串处理函数,这些函数在地狱中运行缓慢,忘记了索引,这使您执行查询的速度大约慢了100倍,数据的不确定性也降低了。 那就是错误的数据库设计的原因。

在用逗号替换分号之后,您当然可以使用诸如find_in_set()之类的东西,但这是变态。
最好的解决方案是,如果需要进一步的此类请求,则重新设计数据库。

暂无
暂无

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

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