SELECT post_id,COUNT(post_id) as pid,hostel_id,ht.user_id,hostel_name,
hostel_type,hostel_district,hostel_area,post_date,hostel_rent,hostel_respond,
h_contact_num,created_date,h_food_type
FROM hostels ht
left join histroy hr
ON ht.hostel_id =hr.post_id
WHERE ht.hostel_district=$city_code AND
ht.status='1' AND
hr.post_type='Hostel'
GROUP BY hr.post_id
ORDER by pid DESC
答案 0 :(得分:1)
如果您想要每组的总计记录数,那么只需COUNT(*)
。如果您希望histroy
表中与hostels
表中的某些内容匹配的记录数,那么您当前使用的COUNT(post_id)
应该已经这样做了。如果您希望hostels
中不的记录数与histroy
中的任何内容匹配,那么您可以使用此代码:
SUM(CASE WHEN post_id IS NULL THEN 1 ELSE 0 END) AS num_hostels_no_match
答案 1 :(得分:0)
并非真正的解决方案更多的插图评论。 左(外)连接是从宿舍获取所有内容的正确方法,但聚合函数忽略空值。例如给出
drop table if exists t;
create table t (id int, val int);
insert into t values
(1,1),(2,null),(3,3);
此查询
MariaDB [sandbox]> select count(val) nonnullcount
-> from t;
返回
+--------------+
| nonnullcount |
+--------------+
| 2 |
+--------------+
1 row in set (0.00 sec)
如果您希望计数包含所有条目,那么您应该满足空值。