我在数据库中有两个mysql表。 table1和table2。
表1
event_id | event_name
------------------------
1 | event1
------------------------
2 | event2
------------------------
3 | event3
------------------------
表2
time_id | event_id | time_name | status |
-----------------------------------------------
1 | 1 | morning | paid |
------------------------------------------------
2 | 1 | morning | not paid |
------------------------------------------------
3 | 2 | afternoon | paid |
-------------------------------------------------
我希望在根据event_id
加入这两个表后,从第一个表中获取event_id
的计数。为什么我需要加入是因为,我需要在time_name中有一个WHERE条件。
到目前为止,我的查询是这样的,
SELECT count(`table1`.`event_id`) FROM `table1` JOIN `table2` ON `table2`.`event_id` = `table1`.`event_id` WHERE `table2`.`time_name` = 'morning'
但我得到结果为2.为什么会这样?我要求的结果是1
答案 0 :(得分:1)
您正在使用event_id字段(仅获取table2具有event_id的行)在表2上执行INNER JOIN,因此您需要使用LEFT JOIN,它将返回table1中的所有行(除了在[3 7]
)并使用匹配的event_id连接table2中的任何行(否则返回NULL字段):
WHERE