【发布时间】:2019-03-06 02:08:29
【问题描述】:
从包含所有用户的 tb_user 表中,我试图内部连接其他表以匹配每个用户的数据并选择它们。但是从 tb_work_time 表中,每个用户的 over_time 列都有多个数据。我想只选择给定日期的数据。
现在我有这个代码,它不能很好地工作.. 有什么可以改进的吗?
SELECT
u.emp_no, u.name, u.position, d.name as dept_name, u.activeYN, (SELECT over_time FROM tb_work_time wt WHERE wt.emp_no = u.emp_no AND wt.work_date = '20190306'),
CASE WHEN ui.updatedTime >= NOW() - INTERVAL 5 minute THEN 'Y' ELSE 'N' END connectYN
FROM tb_user u
INNER JOIN tb_work_time wt ON u.emp_no = wt.emp_no
INNER JOIN tb_user_dept ud ON u.emp_no = ud.emp_no
INNER JOIN tb_dept d ON ud.dept_id = d.dept_id
INNER JOIN tb_user_info ui ON ud.emp_no = ui.emp_no
它只是不停地搜索,没有结果。
SELECT
u.emp_no, u.name, u.position, d.name as dept_name, u.activeYN, (SELECT over_time FROM tb_work_time wt WHERE wt.emp_no = u.emp_no AND wt.work_date = '20190306') AS over_time,
CASE WHEN ui.updatedTime >= NOW() - INTERVAL 5 minute THEN 'Y' ELSE 'N' END connectYN
FROM tb_user u
INNER JOIN tb_user_dept ud ON u.emp_no = ud.emp_no
INNER JOIN tb_dept d ON ud.dept_id = d.dept_id
INNER JOIN tb_user_info ui ON ud.emp_no = ui.emp_no
我已经让这段代码工作了。但这真的很慢。有没有办法让它更快?
【问题讨论】:
-
哪方面不好用?
-
@nick 执行查询后,一直在搜索,没有得到结果
标签: mysql inner-join