【发布时间】:2019-08-02 05:33:16
【问题描述】:
我有表user_product,其中有不同的行,如user,列为他们购买的product。假设我们有一个目标用户user_id 3。那么我要做的是获取所有购买了目标用户购买的任何product 的用户。即具有任何列值等于目标列值的行。
user_id | product_one | product_two | product_three | product_four |
--------------------------------------------------------------------
1 | 1 | 1 | 0 |1 |
--------------------------------------------------------------------
2 | 0 | 1 | 0 |0 |
--------------------------------------------------------------------
3 | 0 | 0 | 1 |1 |
--------------------------------------------------------------------
4 | 0 | 0 | 0 |0 |
--------------------------------------------------------------------
5 | 0 | 1 | 1 |1 |
--------------------------------------------------------------------
这里如果我们的目标行是 3,那么我们应该返回第 3 行(默认情况下因为它的目标行)、第 5 行(因为产品 3 和产品 4)和第 1 行(因为产品 4)
提前致谢。
【问题讨论】:
-
@TimBiegeleisen 更新了它。
-
你还没有问过问题。顺便说一句:这看起来是一个非常糟糕的数据库设计。您永远不会添加或删除产品吗?因为如果你想这样做,那么产品不应该是列,而只是数据,你需要一个产品表和一个由 user_id + product_id 组成的单独桥接表。
-
如果您有超过 4 种产品,例如大约 10 种新产品,您的表格会在 product_fourteen 之前有新列吗?
-
@ThorstenKettner 是的,我知道这不是一个好习惯,但我只需要制作一个快速的网络应用程序来演示,因为我坚持使用它的时间跨度很短,所以稍后会更改。
-
@James 但是考虑到产品数量不会改变,我正在制作这个应用程序。
标签: mysql sql mysql-workbench