Mysql 为什么是;“存在”;子查询不限制两个WHERE条件?

Mysql 为什么是;“存在”;子查询不限制两个WHERE条件?,mysql,sql,Mysql,Sql,这里是编程新手。 我想使用“EXISTS”子查询从另一个表中提取“employees”表中的所有信息以及他们的职务,但仅限于“Assistant Engineer” 我尝试过这种方法: select e.*, t.title from employees e join titles t on t.emp_no = e.emp_no where exists ( select * from titles t where t.emp_no = e.emp_no and t.title =

这里是编程新手。 我想使用“EXISTS”子查询从另一个表中提取“employees”表中的所有信息以及他们的职务,但仅限于“Assistant Engineer”

我尝试过这种方法:

select e.*, t.title
from employees e
join titles t on t.emp_no = e.emp_no
where exists (
  select * from titles t
  where t.emp_no = e.emp_no
  and t.title = 'Assistant Manager'
)
当您删除“助理工程师”条件并将其放在子查询外部时,它可以工作,但我想检查是否可以将其放在子查询内部


非常感谢您的帮助

如果您删除了在您的情况下无效且错误的连接,它将起作用:

select e.*, 'Assistant Manager' title
from employees e
where exists (
  select 1 from titles t
  where t.emp_no = e.emp_no
  and t.title = 'Assistant Manager'
)
如果要使用联接,则不需要
存在

select e.*, t.title
from employees e inner join titles t
on t.emp_no = e.emp_no and t.title = 'Assistant Manager'

编辑您的问题并以文本形式显示您所引用的查询。此处需要什么
存在?既然已经回答了这个问题,答案中的第二个问题就涵盖了你的全部问题。您想要的结果只需要一个内部联接。exists将筛选具有“助理经理”标题的员工,但联接将使您的结果集包含这些(已筛选)员工的所有标题。子查询中“1”的用途是什么?是因为布尔值吗?TRUE或FALSE是否可与1或0互换?
1
after
SELECT…
只是EXISTS语句中使用的一个值。它没有特殊用途。它可以是0或*或null。它只是表明返回了某些内容(某些内容存在)。