我正在MySQL中运行,我有一个表输出作为目标(a,b,c),如下所示:
columnstart columnend
a b
a c
b a
b b
b c
c a
现在我正在尝试获取未在以下输出中列出的目的地
columnstart columnend
a a
c b
c c
有什么方法可以做到这一点?提前致谢。
答案 0 :(得分:4)
以下是通用方法:
columnstart
和columnend
中获得唯一值,并在它们之间进行CROSS JOIN
,以在{{中获得所有可能的组合(笛卡尔积) 3}}。LEFT JOIN
和columnstart
,仅将columnend
派生表结果集与主表一起使用。is null
条件,查找主表中缺少的组合。尝试以下操作( Derived Table ):
SELECT dt.columnstart,
dt.columnend
FROM
(
SELECT t1.columnstart, t2.columnend FROM
(SELECT DISTINCT columnstart FROM your_table) AS t1
CROSS JOIN
(SELECT DISTINCT columnend FROM your_table) AS t2
) AS dt
LEFT JOIN your_table AS t3
ON t3.columnstart = dt.columnstart AND
t3.columnend = dt.columnend
WHERE t3.columnstart IS NULL AND
t3.columnend IS NULL