查询两个没有任何关系的表

时间:2012-08-15 01:26:51

标签: mysql sql

假设我们有两个表usersproducts

users有一个accountBalance列

users架构:

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

products有一个价格列

products架构:

productId   price      .........
1           40000      .........
2           55000      .........
3           90000      .........
.               .      .........
.               .      .........
.               .      .........

这些表没有任何关系,因此我无法通过公共密钥加入它们。我想知道的是找出每个用户可以购买的产品,并将其格式化为以下预期结果:

expected result是:

userId  productIdsUserAffordToBuy
1       NUll
2       1*2
3       1*2*3
.       .
.       .
.       .

3 个答案:

答案 0 :(得分:6)

使用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

答案 1 :(得分:5)

select userid,accountbalance,group_concat(productid) as productaffordtobuy
from users cross join products 
where price<=accountbalance
group by userid

SQL FIDDLE HERE>

答案 2 :(得分:1)

没有任何关系的

Cross Joinid有点棘手

select userid,accountbalance,productid as productaffordtobuy
from users 
cross join products 
where price<=accountbalance
group by userid