假设我们有两个表users和products
table users有一个accountBalance列
表users模式:
userId accountBalance .........
1 500 .........
2 45000 .........
3 4238827 .........
. . .........
. . .........
. . .........
Run Code Online (Sandbox Code Playgroud)
表products有一个价格列
表products模式:
productId price .........
1 40000 .........
2 55000 .........
3 90000 .........
. . .........
. . .........
. . .........
Run Code Online (Sandbox Code Playgroud)
这些表没有任何关系,所以我不能通过公共密钥加入它们.我想知道的是找出每个用户可以购买的产品,并将其格式化为以下预期结果:
该expected result方法是:
userId productIdsUserAffordToBuy
1 NUll
2 1*2
3 1*2*3
. .
. .
. .
Run Code Online (Sandbox Code Playgroud)
使用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
Run Code Online (Sandbox Code Playgroud)
select userid,accountbalance,group_concat(productid) as productaffordtobuy
from users cross join products
where price<=accountbalance
group by userid
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4576 次 |
| 最近记录: |