MYSQL选择相同的列名作为联合中的别名不起作用

Mic*_*uel 1 mysql sql

我有一个简单的MYSQL查询联合两个表:

SELECT * FROM (
    SELECT col1 AS col1A FROM table1
    UNION 
    SELECT col1 AS col1B FROM table2
) AS t WHERE col1A <> col1B
Run Code Online (Sandbox Code Playgroud)

col1在两个表中都调用了一个列,我只需要选择具有该列不同值的行,因此我将它们选为别名.当我运行此查询时,我得到:

Unknown column 'col1B' in 'where clause'
Run Code Online (Sandbox Code Playgroud)

表1数据:

col1
----
test
Run Code Online (Sandbox Code Playgroud)

表2数据:

col1
----
test
Run Code Online (Sandbox Code Playgroud)

查询应该不返回任何行,因为table1中col1中的每个值都等于table2中col1中的每个值,而不是它返回table2中的col1未知,尽管我选择它作为别名

sge*_*des 6

我认为你需要查找适当的用法UNION.它将返回第一个查询的所有结果以及第二个查询的所有结果.这导致单个数据集,具有单个列(不是col1和col2),在这种情况下只是col1.

假设您尝试获取table1中table2中不存在的所有记录,您可以使用NOT EXISTS:

SELECT col1 
FROM table1 t1 
WHERE NOT EXISTS (
    SELECT 1
    FROM table2 t2
    WHERE t1.col1 = t2.col1
    )
Run Code Online (Sandbox Code Playgroud)