假设我们有两个表 usersproducts
users 有一个 accountBalance 列

users 架构:

userId  accountBalance .........
1           500        .........
2           45000      .........
3           4238827    .........
.               .      .........
.               .      .........
.               .      .........

products 有一个价格列

products 架构:
productId   price      .........
1           40000      .........
2           55000      .........
3           90000      .........
.               .      .........
.               .      .........
.               .      .........

这些表没有任何关系,因此我无法通过公共(public)键加入它们。我想知道的是找出每个用户可以购买的产品并将其格式化为以下预期结果:
expected result 是:
userId  productIdsUserAffordToBuy
1       NUll
2       1*2
3       1*2*3
.       .
.       .
.       .

最佳答案

使用 GROUP_CONCAT() 在单个列中创建一个列表并根据条件 accountBalance >= price 加入,您实际上可以执行 LEFT JOIN (必须为买不起任何东西的用户返回 NULL,而不是省略该行):

SELECT
  userId,
  GROUP_CONCAT(productId) AS productIdUserAffordToBuy
FROM
  users
  LEFT JOIN products ON users.accountBalance >= products.price
GROUP BY userId

关于mysql - 查询两个没有任何关系的表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11962976/

10-15 23:56