mysql - 如何将行值转换为列?

标签 mysql phpmyadmin

我希望将一个唯一值作为,而其他 唯一值作为。我不确定这是否是正确的解释,所以我只会留下我想要发生的事情的屏幕截图。抱歉,这是匆忙做出的。

示例:

example

最佳答案

您基本上需要将表连接到其自身。

您可以执行如下查询:

查询

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/

相关文章:

mysql - phpMyAdmin INSERT 上的警告 #1366 即使使用 BEFORE INSERT TRIGGER 代码来解决它。自然的?

php - 子选择查询中的表名别名范围

MySQL - 从两个表中选择 COUNT

java - 在 mysql select 语句中使用 arraylist

mysql - phpmyadmin 需要一个符号名称! (位置 312 处 ")"附近)

mysql - #1146 - 表 'phpmyadmin.pma__tracking' 不存在如何手动禁用?

mysql - 如何查找所有整数列已达到最大值的表?

mysql - Sphinx 或 MySQL 全文搜索不到 1000 个数据条目?

mysql错误选择输出

MySQL查询在PHP中返回0行,实际记录在phpmyadmin中