我有一张桌子订单:
订单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
这可能吗? 欢迎任何想法
答案 0 :(得分:0)
如果这是你的数据库那么它就是一团糟。黄金法则是在数据库中只有一次所有数据。因此,您应该创建一个表" user"他的所有用户都有:
用户:
然后你可以像这样制作你的订单表:
顺序:
现在您可以获得以下所有信息:
SELECT order.order_id, user.name FROM orders
JOIN users ON order.user_id=user.user_id
WHERE order.order_id=141
答案 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
等