Mysql 在联接表的另一个字段中使用左联接和where

Mysql 在联接表的另一个字段中使用左联接和where,mysql,sql,Mysql,Sql,我有两张表,用户和工单。 现在,我需要通过从users表字段中筛选来获得工单结果 我的以下查询没有返回结果 SELECT `work_orders`.`id` as id, `work_orders`.`type` as type , `work_orders`.`title` as title, `work_orders`.`status` as status , `work_orders`.`publish_date` as publish_date , `wo

我有两张表,用户和工单。 现在,我需要通过从users表字段中筛选来获得工单结果

我的以下查询没有返回结果

SELECT `work_orders`.`id` as id, `work_orders`.`type` as type
     , `work_orders`.`title` as title, `work_orders`.`status` as status
     , `work_orders`.`publish_date` as publish_date
     , `work_orders`.`priority` as priority, `work_orders`.`assigned_to` as assigned_to
     , `work_orders`.`client_id` as client_id, `work_orders`.`due_date` as due_date 
  FROM (`work_orders`) 
  LEFT JOIN `users` 
    ON `users`.`id` = `work_orders`.`assigned_to` 
 WHERE `work_orders`.`status` != 'closed' 
   AND users.manager_id = '143' 
 ORDER BY `work_orders`.`id` DESC 
 LIMIT 30

WHERE子句是否过滤掉所有结果

此外,如果要显示仅属于某些用户的工单,请将左联接更改为内部联接,或者使用EXISTS

试试这个

SELECT field1, field2, ...
FROM work_orders
WHERE EXISTS (
    SELECT 1 
    FROM users 
    WHERE  users.id = work_orders.assigned_to 
       AND manager_id='143'
)

请在写问题时花些时间使其可读。您可能还想调查表的别名;例如,
从工单中选择wo.id作为wo
。不需要在每一列/表上使用反勾号;只有在使用保留名称的情况下。删除where子句,然后查看得到的命中率。将从下次开始检查Ben,查询没有明显错误。您需要检查它是否应该返回数据。e、 g执行加入,确保它找到一些订单。如果它确实执行了加入,则执行where out。从那里开始。您好,工单pretian发送给某些用户,但同样链接到经理id的用户也是用户。现在我需要按经理id筛选工单,经理id是users表中的字段,所以您试图获取某个经理下的所有工单。对吗?是的,这正是我想做的。@MichaelAlbert将来会使用代码标记(编辑器上的大括号)或缩进代码4空格使其更精确readable@mattedgod-谢谢。我是新来的。