Mysql 如何相对于另一个表中的预设数据查找列中不存在的数据';s柱
我需要一个SQL代码来比较一个表中不存在的数据与另一个包含唯一预期数据集的表 我尝试过使用EXIST和NOT EXIST运算符 EXIST操作符将在第二个表中显示所有数据。“不存在”操作符将不显示任何结果 代码看起来像Mysql 如何相对于另一个表中的预设数据查找列中不存在的数据';s柱,mysql,sql,ms-access,Mysql,Sql,Ms Access,我需要一个SQL代码来比较一个表中不存在的数据与另一个包含唯一预期数据集的表 我尝试过使用EXIST和NOT EXIST运算符 EXIST操作符将在第二个表中显示所有数据。“不存在”操作符将不显示任何结果 代码看起来像 SELECT * FROM st WHERE EXISTS (SELECT data FROM udt WHERE st.data <> udt.data) 这是我的第二个表格(st)示例: 我想有一个代码,它将显示第二个表中不存在的名称和代码。即: +--
SELECT *
FROM st
WHERE EXISTS
(SELECT data FROM udt WHERE st.data <> udt.data)
这是我的第二个表格(st)示例:
我想有一个代码,它将显示第二个表中不存在的名称和代码。即:
+------+------+
| name | data |
+------+------+
| AZ | 2 |
| AZ | 4 |
+------+------+
等等
首先,这可能吗?如果可能,我可以应用什么代码语法?
我知道为什么EXIST和NOT EXIST不会显示数据,但有什么方法可以得到所需的结果吗?不确定这是否是最好的方法,现在还为时过早,而且还没有多少咖啡:o) 我已更改了您的字段名,但使它们尽可能接近您的字段名
select q1.[name_],q1.data1
from
(select distinct [name_],data1 from
st,udt) as q1
left join
st as d1
on q1.[name_]=d1.[name_] and
q1.data1=d1.[data_]
where d1.[name_] is null
给你结果
名称数据1
az 2
az 4
一
到3点
cx 2
cx 3
dw 1
dw 4生成名称和数据的所有组合,然后删除第二个表中的组合 在几乎任何数据库中,都可以通过以下方式执行此操作:
select n.name, t1.data
from (select distinct name from table2) n cross join
table1 t1 left join
table2 t2
on t2.name = n.name and t2.data = t1.data
where t2.data is null;
MS Access不支持此语法,因此您可以执行以下操作:
select n.name, t1.data
from (select distinct name from table2) n,
table1 t1
where not exists (select 1
from table2 t2
where t2.name = n.name and t2.data = t1.data
);
查询不显示任何结果。如果删除IS NULL语句,则显示的数据与表st中的数据保持一致。根据显示的数据,我使查询正常工作。希望您能整理好。您使用的是MS Access还是MySQL?请正确标记。
select n.name, t1.data
from (select distinct name from table2) n cross join
table1 t1 left join
table2 t2
on t2.name = n.name and t2.data = t1.data
where t2.data is null;
select n.name, t1.data
from (select distinct name from table2) n,
table1 t1
where not exists (select 1
from table2 t2
where t2.name = n.name and t2.data = t1.data
);