我在 MySQL 中运行,我有一个表输出作为目的地(a,b,c),如下所示
columnstart columnend
a b
a c
b a
b b
b c
c a
Run Code Online (Sandbox Code Playgroud)
现在我正在尝试获取未在下面的输出中列出的目的地
columnstart columnend
a a
c b
c c
Run Code Online (Sandbox Code Playgroud)
有什么方法可以实现这一目标吗?提前致谢。
以下是通用方法:
columnstart并在它们之间执行一个操作,以获取Derived Table中的所有可能组合(笛卡尔积)。columnendCROSS JOINLEFT JOIN派生表结果集与主表,使用columnstart和columnend。is null尝试以下操作(SQL Fiddle DEMO):
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
Run Code Online (Sandbox Code Playgroud)