我需要来自同一个表的行的组合。是否可以 ? 这是我的 table :
CREATE TABLE `ta` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(50) NULL DEFAULT NULL,
PRIMARY KEY (`id`)
)
INSERT INTO `ta` (`id`, `name`) VALUES
(1, 'ta1'),
(2, 'ta2'),
(3, 'ta3'),
(4, 'ta4');
结果应如下所示:
| ta1 | ta2 |
| ta1 | ta3 |
| ta1 | ta4 |
| ta2 | ta3 |
| ta2 | ta4 |
| ta3 | ta4 |
或者
| ta1 | ta2 |
| ta1 | ta3 |
| ta1 | ta4 |
| ta2 | ta1 |
| ta2 | ta3 |
| ta2 | ta4 |
| ta3 | ta1 |
| ta3 | ta2 |
| ta3 | ta4 |
| ta4 | ta1 |
| ta4 | ta2 |
| ta4 | ta3 |
最佳答案
您需要制作CROSS JOIN
表的两个实例之间 ta
说A & B
SELECT
A.name,
B.name FROM ta A CROSS JOIN ta B
WHERE A.id <> B.id
注意:
如果您考虑<a,b> and <b,a>
条目不同,那么上面的查询就足够了。
如果您只想为每对记录一条记录,且顺序无关紧要(即 <a,b> is equal to <b,a>)
,则采用以下内容:
SELECT
A.name,
B.name FROM ta A CROSS JOIN ta B
WHERE A.id < B.id
关于mysql - 如何获取同一个表的行之间所有可能的组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40212606/