最佳答案
您基本上需要将表连接到其自身。
您可以执行如下查询:
查询
SELECT chat.chat_id, chat.chat_user AS chat_user1, chat2.chat_user AS chat_user2
FROM chat as chat, chat as chat2
WHERE chat.chat_id = chat2.chat_id
AND chat.chat_user != chat2.chat_user
GROUP BY chat_id
这会将其连接到自身并检查所有 chat_id 组,并根据需要返回带有额外列的结果。
选择为
重要的是,要更改列名称,您可以 SELECT column1 AS new_column1、column2 AS new_column2
如果您有不明确的列名称,这在本质上将表与其自身连接时当然会出现这种情况,这特别有用。
哪里/和
这里我们首先检查chat_id是否相同,因此所有等于14的chat_id都会被返回,但是为了阻止它创建多行,我们告诉它忽略在第一次运行时已经放入chat_user2的chat_users代码。
分组依据
这会阻止它创建重复的数据行并为每个 chat_id 返回一个结果
我假设您的 table 被称为“聊天”。如果没有,请将 chat 替换为您的 table 名
关于mysql - 如何将行值转换为列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48542916/