数据库管理系统:MySQL 8.0.29
我有一个用户表:
CREATE TABLE users ( id INT, country varchar(255) );
INSERT INTO `users` (`id`, `country`) VALUES
(1, "German"), (2, "USA"), (3, "France");
SELECT * FROM users;
有一个影响区域表:
CREATE TABLE `influence-zone` ( id INT, name varchar(255), country varchar(255) );
INSERT INTO `influence-zone` (`id`, `name`, `country`) VALUES
(1, "zone", "German"), (2, "important", "USA"), (3, "zone89", "France"),
(4,"zone1", "ALL"), (5,"zone2", "ALL");
SELECT * FROM `influence-zone`;
有必要按国家/地区将影响区域与用户相关联。
我这样做并解决了部分问题:
SELECT * FROM `influence-zone` JOIN users ON `influence-zone`.country = users.country
但是还剩下两个区域(id:4.5),国家为 ALL。
它们需要与样本中的所有用户相关联。如何在一个请求中做到这一点?
如果我理解正确
要么就在这里
但是通过这种连接,我们创建了一个笛卡尔积,如果有大量数据,它可以加载服务器。所以要小心申请。
PS我认为评论中的解决方案(来自@Akina)更加简洁和更好。
你可以在这里看到