You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

咨询:查询无(Name,Slot,Date)对应记录的人员专业信息SQL语句

解决你的SQL查询需求

嘿,我来帮你搞定这个SQL查询需求~这里有几种可靠的写法,你可以根据自己的数据库环境选择合适的:

方法1:使用NOT EXISTS(推荐)

这种写法逻辑清晰,而且大多数数据库优化器对它的支持很好,执行效率也不错:

SELECT t1.Name, t1.Specialisation
FROM Table1 t1
WHERE t1.Name = '输入的Name值'
  AND NOT EXISTS (
    SELECT 1
    FROM Table2 t2
    WHERE t2.Name = t1.Name
      AND t2.Slot = '输入的Slot值'
      AND t2.Date = '输入的Date值'
  );

简单解释:NOT EXISTS子查询会检查Table2中是否存在匹配的(Name, Slot, Date)组合,如果不存在,就返回Table1中对应Name的记录。

方法2:使用LEFT JOIN + IS NULL

这种写法也很直观,通过左连接来筛选无匹配的记录:

SELECT t1.Name, t1.Specialisation
FROM Table1 t1
LEFT JOIN Table2 t2
  ON t1.Name = t2.Name
  AND t2.Slot = '输入的Slot值'
  AND t2.Date = '输入的Date值'
WHERE t1.Name = '输入的Name值'
  AND t2.Name IS NULL;

简单解释:LEFT JOIN会保留Table1的所有目标记录,然后尝试匹配Table2的对应组合。如果匹配不到,Table2的字段会显示为NULL,我们通过t2.Name IS NULL来筛选出这些无匹配的记录。

方法3:使用NOT IN(需注意空值问题)

这种写法要谨慎使用,如果Table2中的Name/Slot/Date存在NULL值,会导致整个查询返回空结果,所以必须加上非空判断:

SELECT t1.Name, t1.Specialisation
FROM Table1 t1
WHERE t1.Name = '输入的Name值'
  AND (t1.Name, '输入的Slot值', '输入的Date值') NOT IN (
    SELECT Name, Slot, Date
    FROM Table2
    WHERE Name IS NOT NULL AND Slot IS NOT NULL AND Date IS NOT NULL
  );

简单解释:NOT IN会检查目标组合是否不在Table2的结果集中,但如果子查询里有任何NULL值,NOT IN的逻辑会直接判定为不成立,所以一定要加上非空过滤条件。

内容的提问来源于stack exchange,提问作者Shrayani Mondal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:26:21