在MySQL中查询共享值的行,并将它们作为列返回?

在MySQL中查询共享值的行,并将它们作为列返回?,mysql,Mysql,这是家庭作业。我没有复制粘贴下面的问题,我做了一个更简单的版本,重点放在我被卡住的特定区域 假设我有一个包含两个值的表:一个人的名字和他昨天吃午饭的地方。假设每个人都成对吃午饭。我如何查询数据库以返回昨天一起吃午餐的所有成对的人?每对必须只列出一次 事实上,我甚至不知道教授将它们成对返回是什么意思。我给他发了封电子邮件,但还没有回复。看起来他想让我写一个查询,返回一个表,其中第1列为person 1,第2列为person 2 有什么关于如何进行的建议吗?假设他希望它们作为单独的列,这似乎是正确的

这是家庭作业。我没有复制粘贴下面的问题,我做了一个更简单的版本,重点放在我被卡住的特定区域

假设我有一个包含两个值的表:一个人的名字和他昨天吃午饭的地方。假设每个人都成对吃午饭。我如何查询数据库以返回昨天一起吃午餐的所有成对的人?每对必须只列出一次

事实上,我甚至不知道教授将它们成对返回是什么意思。我给他发了封电子邮件,但还没有回复。看起来他想让我写一个查询,返回一个表,其中第1列为person 1,第2列为person 2

有什么关于如何进行的建议吗?假设他希望它们作为单独的列,这似乎是正确的吗

到目前为止,我基本上有:

SELECT name, restaurant FROM lunches GROUP BY restaurant, name

这基本上只是重新组织了桌子,这样一起吃午饭的人就一个接一个了。

我们必须假设在给定的餐厅里只有一对人在吃午饭。 您可以使用“自联接”获取对的列表:

SELECT l1.name, l2.name FROM lunches l1
JOIN lunches l2
ON l1.restaurant = l2.restaurant AND l1.name < l2.name
第一个查询将在两个不同的列中返回对,而第二个查询将在一个列中返回对,使用逗号作为分隔符(默认为GROUP_CONCAT,您可以根据需要将其更改为任何值)。
还请注意,对于第一个查询,成对的名称将按字母顺序排列,因为我们使用
您可能想使用
order BY
,这是打字错误吗?
SELECT GROUP_CONCAT(name) FROM lunches 
GROUP BY restaurant