如何从数据库中过滤此数据?

时间:2010-08-03 15:31:35

标签: php sql mysql

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

“Rock; Pop; Metal; Dance”(varchar)

我需要生成一个excel列表,这些人按音乐品味分组。

例如:

  1. Rock中的每个人都有一个列表;金属;舞蹈
  2. Rock的每个人都有另一个人;金属;恍惚
  3. 另一个摇滚(Only Rock)
  4. 等......
  5. 每个用户只能在一个列表中。 我需要在我的新闻通讯软件中导入此列表。每种类型都是邮件列表。

    我需要执行所有类型的组合,然后在获得结果时创建列表。 我想知道哪种方法最好也更快。 可以用PHP脚本甚至只是SQL。

    Ps。:我需要来自其他人创建的旧数据库的这些数据。我同意,这是一种可怕的存储方式。

2 个答案:

答案 0 :(得分:2)

在我看来,你可以运行这个简单的查询:

SELECT * FROM table_name ORDER BY music_taste_field

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

另外,正如其他人评论的那样,这是存储音乐偏好的一种可怕方式。

答案 1 :(得分:0)

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

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

现在,您将调用字符串操作函数,这些函数运行缓慢,忘记索引,这使您的查询速度大约低100倍,数据不太确定。这就是错误的数据库设计导致的地方。

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