如何重新排列 table 以获得 Mysql 中现有组合的列表?
How can I rearrange a table to get a list of the existing combinations in Mysql?
如何重新排列 table 以获得 Mysql 中现有组合(双向)的列表?
例如,我有一个包含两列的 table
col1 col2
1 5
7 1
1 2
我想要一个新的 table(添加到现有的 table),我在其中翻转 col2 和 col1。
col1 col2
1 5
7 1
1 2
5 1
1 7
2 1
这让我可以在双向查看时看到每个数字的所有值。
喜欢
1: 5, 2, 7
2: 1
5: 1
7: 1
希望这是有道理的。
感谢您的帮助!
使用union
.
select col1,col2 from tbl
union
select col2,col1 from tbl
使用 union
而不是 union all
因为当 table 中已经存在对称对时后者会给出重复的行(例如组合 1,5
5,1
)
然后使用group_concat
.
select col1,group_concat(col2)
from (select col1,col2 from tbl
union
select col2,col1 from tbl) t
group by col1
如果您使用已交付的 table,则不必创建新的 table。
您可以使用一个查询而不是使用两个查询。
查询
SELECT
col1,
GROUP_CONCAT(col2) AS col2
FROM
(SELECT
col1, col2
FROM
[TABLE]
UNION
SELECT
col2, col1
FROM
[TABLE]
) table_data
GROUP BY
col1
ORDER BY
col1 ASC
如何重新排列 table 以获得 Mysql 中现有组合(双向)的列表?
例如,我有一个包含两列的 table
col1 col2
1 5
7 1
1 2
我想要一个新的 table(添加到现有的 table),我在其中翻转 col2 和 col1。
col1 col2
1 5
7 1
1 2
5 1
1 7
2 1
这让我可以在双向查看时看到每个数字的所有值。
喜欢
1: 5, 2, 7
2: 1
5: 1
7: 1
希望这是有道理的。
感谢您的帮助!
使用union
.
select col1,col2 from tbl
union
select col2,col1 from tbl
使用 union
而不是 union all
因为当 table 中已经存在对称对时后者会给出重复的行(例如组合 1,5
5,1
)
然后使用group_concat
.
select col1,group_concat(col2)
from (select col1,col2 from tbl
union
select col2,col1 from tbl) t
group by col1
如果您使用已交付的 table,则不必创建新的 table。 您可以使用一个查询而不是使用两个查询。
查询
SELECT
col1,
GROUP_CONCAT(col2) AS col2
FROM
(SELECT
col1, col2
FROM
[TABLE]
UNION
SELECT
col2, col1
FROM
[TABLE]
) table_data
GROUP BY
col1
ORDER BY
col1 ASC