Mysql 不在也不喜欢

Mysql 不在也不喜欢,mysql,Mysql,请让我知道以下问题:没有返回行 Select * from class where sem NOT LIKE concat('%',(Select sem_id from semester ),'%') 我问了这个问题,因为下面的技巧很有效:返回了8行 Select * from class where sem NOT IN (Select sem_id from semester ) 它们是两个不同的查询,尽管它们都很奇怪。我怀疑每个班级都有一个学期。如果您有适当的外键

请让我知道以下问题:没有返回行

 Select * 
 from class 
 where sem NOT LIKE concat('%',(Select sem_id from semester ),'%')
我问了这个问题,因为下面的技巧很有效:返回了8行

 Select * 
 from class 
 where sem NOT IN (Select sem_id from semester )

它们是两个不同的查询,尽管它们都很奇怪。我怀疑每个班级都有一个学期。如果您有适当的外键约束,sem最多可以为null,在这种情况下,您的查询将变成:

select * 
from class 
where sem is null
但是第二个查询应该可以工作,并且应该返回所有在sem中有值但不在表中的类


然而,当学期中有多个记录时,第一个查询就会失败。此外,它还对假定为数字的字段进行字符串比较。总而言之,第一个查询没有意义。

为此需要连接语法。想必,你是在寻找那些学期与表中任何一个学期都不一样的课程。首先找到匹配的,然后使用以下方法过滤掉:

您可以通过如下方式编写查询来删除组:

 Select c.*
 from class 
 where not exists (select s.sem_id
                   from semester s
                   where class.sem like ('%', s.sem_id, '%')
                   limit 1
                  )

有错误信息吗?也许喜欢的r-arg不能是一个表达式concat返回什么以及sem的类型?你的concat对我来说没有意义;请尝试选择concat“%”,从学期“%”中选择sem_id,然后查看为concat提供别名并将其传递给的内容condition@akonsu我不喜欢加入表格的部分,然后简单地申请不喜欢,但它不会显示任何内容,另外,我对concat的想法是,querycan返回%LIKE%的值,我可以这样比较sem和year不在select seme中,Yer from class?如果没有,那么我如何进行这样的比较要比较两件事,请使用相关子查询版本并将它们放在子查询的where子句中。非常感谢,问题已经解决了,我忘记删除值了
 Select c.*
 from class 
 where not exists (select s.sem_id
                   from semester s
                   where class.sem like ('%', s.sem_id, '%')
                   limit 1
                  )