mysql查询以逗号分隔列表搜索多个值

时间:2016-02-08 21:52:17

标签: mysql sql select

我有一张桌子订单:

订单VARCHAR(20)

开发人员VARCHAR(50)

我需要以下列方式选择SELECT字段:

例如我在表格中有这些数据:

Order              Developer

Order 141          Tim (Apple), Alex (Microsoft), Sara (Amazon), Neylo
Order 171          James (Apple), John (Amazon)
Order 181          Nike (Microsoft)

需要进行SQL查询才能得到这个:

Developer                Order

Tim, James (Apple)       Order 141, Order 171
Alex, Nike (Microsoft)   Order 141, Order 181
Sara, John (Amazon)      Order 141, Order 171
Neylo                    Order 141

这可能吗? 欢迎任何想法

2 个答案:

答案 0 :(得分:0)

如果这是你的数据库那么它就是一团糟。黄金法则是在数据库中只有一次所有数据。因此,您应该创建一个表" user"他的所有用户都有:

用户:

  • USER_ID
  • 名称
  • 电子邮件
  • ...

然后你可以像这样制作你的订单表:

顺序:

  • ORDER_ID
  • USER_ID
  • ...

现在您可以获得以下所有信息:

SELECT order.order_id, user.name FROM orders
JOIN users ON order.user_id=user.user_id
WHERE order.order_id=141

Understanding JOINS in MySQL

答案 1 :(得分:0)

最好的方法是使用一个新表来使其像其他提到的那样原子化,但听起来你不能这样做。

如果您可以添加存储的功能,此解决方案将起作用。 http://blog.fedecarg.com/2009/02/22/mysql-split-string-function/

如果您无法添加功能(例如托管没有管理员权限等)。你可以使用子串来破坏数据(丑陋丑陋丑陋 - 我甚至不愿意提到它它是如此糟糕 - 但如果你写的是最大数量的支持值,它可以工作)。 https://stackoverflow.com/a/11008567/455627

e.g。

 substring_index(`Developer`,',',1) ==> first value
 substring_index(substring_index(`Developer`,',',-2),',',1) ==> second value