即使使用带内连接的不同关键字,重复值也是如此

时间:2015-08-02 17:02:53

标签: mysql inner-join distinct

学生表。

| regno |名字| lname |地址|性别|手机|

预订表

bookID | regno | tokenNo | CheckIn | CheckOut的

我想在两个特定日期之间让女学生到场。我试图获取相应的值,但即使使用distinct关键字也会输出重复值。 我也尝试过使用Union,但它仍然与不同的相反。

 SELECT  count(gender) FROM (SELECT  distinct regno from student where 
 gender = 'Male' union  SELECT Distinct regno from book)  x  LEFT OUTER JOIN 
 student a on x.regno = a.regno LEFT OUTER JOIN book b on x.regno = b.regno
  where checkIn >= '2015/7/23' AND checkOut <= '2015/7/31';

这是我试过的另一个

 SELECT count(gender) FROM (SELECT  distinct(regno), gender from student
   where  gender = 'Male' ) AS A inner JOIN book AS B On A.regno = B.regno            
    where   checkIn >= '2015/7/23' AND checkOut <= '2015/7/31';

1 个答案:

答案 0 :(得分:0)

看起来你的简单查询过于复杂。您需要做的就是加入表格并过滤日期和性别并应用计数。

SELECT COUNT(DISTINCT s.regno) 
FROM student s
JOIN booking b on s.regno = b.regno
WHERE s.gender = 'Female' 
  AND b.checkIn >= '2015/7/23' AND b.checkOut <= '2015/7/31';

distinct关键字可确保每个学生只有在该期间内有多次预订时才会被计算一次。如果您想要计算所有预订,只需删除distinct