数据库管理系统:MySQL 8.0.29
共有三个表:
CREATE TABLE userBonuses (
id INT,
userId INT,
bonusId INT
)
CREATE TABLE orders (
id INT,
userId INT
)
CREATE TABLE bonuses (
id INT,
ordersCount INT
)
您必须从表中选择所有内容bonuses
。选择bonuses
. ordersCount
超过每个用户的订单数量(COUNT(*) AS order_counts) и GROUP BY userId.
之后,您需要为表中的每个用户创建奖金userBonuses
。
例如,ID 为 10 的用户有 3 个订单。
INSERT INTO
`orders` (`id`, `userId`)
VALUES
(1, 10),
(2, 10),
(3, 10)
奖金规则:
INSERT INTO
`bonuses` (`id`, `ordersCount`)
VALUES
(1, 1),
(2, 2),
(3, 6)
- 根据 ID 为 1 的规则,用户必须执行 1 个订单才能在赠金中创建一个条目。在这里,ID 为 10 的用户完成了 3 个订单。必须为此规则和此用户创建 3 个奖金。
- 根据 ID 为 2 的规则,用户必须执行 2 个订单,ID 为 10 的用户将获得此规则的 1 个奖励。
- 根据 ID 为 3 的规则,用户必须执行 6 个订单,ID 为 10 的用户不会因此获得奖励。
试图写选择请求。但我不能做奖金。这是请求本身。仅实施选择的订单。
SELECT
*
FROM
(
SELECT
*
FROM
`bonuses` AS `bonuses`
) AS `bp`
JOIN (
SELECT
`orders`.`userId`,
COUNT(*) AS `order_counts`
FROM
`orders`
GROUP BY
`userId`
) AS `or` ON `or`.`order_counts` > `bp`.`ordersCount`
分别地:
总共:
https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=44891d8c8522ec1d7127e9e3e00a80b0
要插入第三个表,请添加 INSERT 并从输出列表中删除额外的字段。