我无法从相关表中按条件获取记录。有两个表 account 和一个使用 account_id
account字段的相关订单表。

您需要使用 WHERE pay > 500 和 pay < 2000 的请求仅获取 Marina (id=3) 的帐户记录,因为只有 900 和 600 人通过了该条件。那些。如果该帐户的 ALL ORDER.PAY 满足条件但因为此类值在其他帐户中的其他订单中,也属于选择范围。必须所有可用的相关数据都满足条件;如果至少一行不满足条件,则该帐户不应包含在
使用 WHERE 和 BETWEEN 的选择中
SELECT
`account`.* , `order`.`pay`
FROM
`account`
LEFT JOIN `order` ON `account`.`id` = `order`.`account_id`
WHERE
`order`.`pay` BETWEEN 500
AND 2000
GROUP BY
`account`.`id`
id name pay
1 Elena 1200
2 Olga 1200
3 Marina 900
使用 WHERE 和 <>
SELECT
`account`.* , `order`.`pay`
FROM
`account`
LEFT JOIN `order` ON `account`.`id` = `order`.`account_id`
WHERE
`order`.`pay` > 500
AND `order`.`pay` < 2000
GROUP BY
`account`.`id`
我也得到同样的结果
id name pay
1 Elena 1200
2 Olga 1200
3 Marina 900
使用 HAVING
SELECT
`account`.* , `order`.`pay`
FROM
`account`
LEFT JOIN `order` ON `account`.`id` = `order`.`account_id`
GROUP BY
`account`.`id`
HAVING
(
SUM(order.pay) >= 500
)
AND (
SUM(order.pay) <= 2000
)
我收到
id name pay
1 Elena 475
2 Olga 475
3 Marina 900
但你只需要获得玛丽娜帐户,因为仅此条目所有 ORDER.PAY 对应的付款条件为 500 至 2000
我很感激你的帮助
