mysql - 如何针对另一个表的列中的预设数据查找列中不存在的数据
问题描述
我需要一个 SQL 代码来比较一个表中不存在的数据与另一个包含一组唯一预期数据的表。
我尝试过使用 EXIST 和 NOT EXIST 运算符。
EXIST 运算符将显示第二个表中的所有数据。NOT EXIST 运算符不会显示任何结果。
代码看起来像
SELECT *
FROM st
WHERE EXISTS
(SELECT data FROM udt WHERE st.data <> udt.data)
这是我的唯一数据表 (udt) 示例:
+------+
| data |
+------+
| 1 |
| 2 |
| 3 |
| 4 |
+------+
这是我的第二个表(st)示例:
+------+------+
| name | data |
+------+------+
| AZ | 1 |
| AZ | 3 |
| BY | 2 |
| BY | 4 |
| CX | 1 |
| CX | 4 |
| DW | 2 |
| DW | 3 |
+------+------+
我想要一个代码来显示第二个表中不存在的名称和代码。那是:
+------+------+
| 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
1
由 3
CX 2
CX 3
dw 1
dw 4
推荐阅读
- javascript - 如何使用动态表单控件名称修补表单值
- javascript - 电子表格时间戳脚本跳过行
- javascript - 如何使用ajax在数据库表中插入新行
- java - 为什么当 Object 类是所有人的超类时,我无法在 Object 类引用下捕获异常?
- python - 如果某些字符不在字符串中的特定位置,则删除它们#python
- asp.net - Asp.net Web Forms GridView 动态列问题
- ruby - 我的红宝石计算器不会输出到我的控制台
- postgresql - 如何在 PostgreSQL 中返回表记录数组
- python - 使用 BeautifulSoup 从网页的特定部分抓取所有图像
- java - 降低新 JVM 的性能