Mysql 如果需要查询逻辑,如何从users表中按id分组?

Mysql 如果需要查询逻辑,如何从users表中按id分组?,mysql,Mysql,我有两张桌子: INSERT INTO `companies` (`name`) VALUES ('Walmart'), ('Disney'), ('Amazon'), ('Unicom'), ('Microsoft'), ('Intel') INSERT INTO `users` (`id`, `company`) VALUES (1, 'Disney'), (2, 'Amazon'), (3, 'Intel'), (3, 'Walmart'), (4, 'Microsoft'), (4,

我有两张桌子:

INSERT INTO `companies` (`name`) VALUES
('Walmart'),
('Disney'),
('Amazon'),
('Unicom'),
('Microsoft'),
('Intel')

INSERT INTO `users` (`id`, `company`) VALUES
(1, 'Disney'),
(2, 'Amazon'),
(3, 'Intel'),
(3, 'Walmart'),
(4, 'Microsoft'),
(4, 'Unicom'),
(5, 'Microsoft')
结果如下:

1. 'Walmart', 'Amazon', 'Unicom', 'Microsoft', 'Intel'
2. 'Walmart', 'Disney', 'Unicom', 'Microsoft', 'Intel'
3. 'Disney', 'Amazon', 'Unicom', 'Microsoft'
4. 'Walmart', 'Disney', 'Amazon', 'Intel'
5. 'Walmart', 'Disney', 'Amazon', 'Unicom', 'Intel'
我试过:

"SELECT a.name, b.id, b.company FROM users RIGHT JOIN companies ON b.company <> a.name"
“从用户中选择a.name、b.id、b.company右键加入b.company a.name上的公司”
这提供了正确的逻辑,省略了列表中已经存在的公司名称,但问题是它处理相同的id两次,并省略了不同的公司名称。如何处理这个查询?

试试这个

"SELECT a.name, b.id, b.company FROM users RIGHT JOIN companies ON b.company <> a.name group by b.company"
“从用户中选择a.name、b.id、b.company按b.company右键加入b.company a.name组中的公司”

下面查询的基本思想是将包含所有可能的用户/公司组合的日历表左键联接到
用户
表。那些匹配的组合将被删除,剩下的公司将使用
GROUP\u CONCAT
为每个用户汇总成一个CSV字符串

SELECT t1.id, GROUP_CONCAT(t1.name)
FROM
(
    SELECT DISTINCT u.id, c.name
    FROM users u
    CROSS JOIN companies c
) t1
LEFT JOIN users t2
    ON t1.name = t2.company AND t1.id = t2.id
WHERE t2.company IS NULL
GROUP BY
    t1.id;


那是一种奇怪的桌子设计。这是干什么用的?