Mysql 我想选择不符合where条件或“where”的行;除非条件是“;

Mysql 我想选择不符合where条件或“where”的行;除非条件是“;,mysql,sql,database,Mysql,Sql,Database,我有两张桌子。 第一个是“tab_任务” 第二个表是“tab_user” 从状态为'1'的任务选项卡中选择创建人。 现在我们有4行“aarav、yamini、manish和aarav” 现在我想从“tab_user”中获取“txt_full_name”,其中“txt_full_name”不等于“tab_任务的创建人”。 我的意思是我想从“tab_用户”中获取:rahul、jasmin、priyanka。一个简单的解决方案: SELECT txt_full_name FROM tab_user

我有两张桌子。 第一个是“tab_任务”

第二个表是“tab_user”

从状态为'1'的任务选项卡中选择创建人。
现在我们有4行“aarav、yamini、manish和aarav”

现在我想从“tab_user”中获取“txt_full_name”,其中“txt_full_name”不等于“tab_任务的创建人”。
我的意思是我想从“tab_用户”中获取:rahul、jasmin、priyanka。一个简单的解决方案:

SELECT txt_full_name FROM tab_user
    WHERE txt_full_name NOT IN (SELECT created_by from tab_task where status='1')

(请注意,上面假定由创建的
列为
非空
,否则查询将不会返回任何行,因为与
比较会产生
未知
-)。

一个简单的解决方案:

SELECT txt_full_name FROM tab_user
    WHERE txt_full_name NOT IN (SELECT created_by from tab_task where status='1')

(请注意,上面假设由
创建的
列为
非空
,否则查询将不会返回任何行,因为与
NULL
比较会产生
未知
-)。

尝试加入表,然后选择空行:

SELECT txt_full_name FROM tab_user
LEFT OUTER JOIN 
(
  SELECT created_by from tab_task where status='1'
)tbStat
ON created_by = txt_full_name
WHERE created_by IS NULL

尝试联接表,然后选择空行:

SELECT txt_full_name FROM tab_user
LEFT OUTER JOIN 
(
  SELECT created_by from tab_task where status='1'
)tbStat
ON created_by = txt_full_name
WHERE created_by IS NULL

除了
解决方案中@Jiri tosek的
,您还可以使用
加入
存在
语法:

select u.txt_full_name
from tab_user u
left join tab_task t
on u.txt_full_name = t.created_by
and t.status = '1'
where t.created_by is null;


请参见此处。

除了在
解决方案中使用@Jiri tosek的
,您还可以使用
加入
存在
语法:

select u.txt_full_name
from tab_user u
left join tab_task t
on u.txt_full_name = t.created_by
and t.status = '1'
where t.created_by is null;


请看这里。

如果子查询返回一个创建为NULL的_,会发生什么?这就是为什么我通常不存在
。如果突然出现空值,结果就不那么令人惊讶了。而且,
不存在
中的
具有更好的性能。如果子查询返回了一个创建为空的\u,会发生什么?这就是为什么我通常使用
不存在
。如果突然出现一个空值,结果就不那么令人惊讶了。而且,
不存在
将比
中的
具有更好的性能。大致上:从x左选择x.*在y上连接y.something=x.something和y.otherthing=?其中y.primary_键为空:从x左选择x.*在y.something=x.something和y.otherthing=?其中y.primary_键为空