【问题标题】:Multiple condition with two table data in MysqlMysql中有两个表数据的多个条件
【发布时间】:2015-12-09 13:03:35
【问题描述】:

我有两张桌子
一张“学生”表:

+-----------+-------------+------+ |领域 |类型 |空 | +-----------+-------------+------+ |学生证 |整数(11) |否 | |分类号 | varchar(128) |是 | |姓名 | varchar(128) |是 | |电子邮件 | varchar(128) |是 | +-----------+-------------+------+

第二个“每日”表:

+-----------+---------+------+ |领域 |类型 |空 | +-----------+---------+------+ |每日号 |整数(11) |否 | |分类号 |整数(11) |是 | |学生证 |整数(11) |是 | |标记 |整数(11) |是 | |每日日期 |日期 |是 | +-----------+---------+------+

我有两个值 classid 和 date。现在我想在某些条件下制作下表:

+-----------+ |领域 | +-----------+ |学生证 | |分类号 | |姓名 | |电子邮件 | |标记 | |每日日期 | +-----------+

我希望特定班级中的所有学生数据都为给定日期的 daily 表格标记。如果给定日期没有数据,则获取所有具有空值的学生。

例如:

+-----------+---------+--------+-------+------+---- --------+ |学生证 |分类号 |姓名 |电子邮件 |标记 |每日日期 | +-----------+---------+--------+-------+------+---- --------+ | 1 | 1 |石浦 | s@g.c |空 |空 | | 2 | 1 |迪普克 | d@g.c |空 |空 | +-----------+---------+--------+-------+------+---- --------+

我尝试使用以下 sql:

选择 s.*,d.mark,d.dailydate 从学生离开 每天加入 s.studentid=d.studentid 和 s.classid=d.classid 其中 s.classid=1 和 d.dailydate='2014-11-11'

【问题讨论】:

  • 查询看起来没问题。出了什么问题?
  • 当我添加日期条件时,如果没有数据,它不会显示任何内容......我想获取学生所有具有空值的数据

标签: mysql sql


【解决方案1】:

这是您的查询:

Select s.*, d.mark, d.dailydate
From student s left join
     daily d 
     on s.studentid = d.studentid and s.classid = d.classid 
 where s.classid = 1 and d.dailydate = '2014-11-11' 

date 的条件是撤消left join。您需要将其移至on 子句:

Select s.*, d.mark, d.dailydate
From student s left join
     daily d 
     on s.studentid = d.studentid and s.classid = d.classid and
        d.dailydate = '2014-11-11' 
 where s.classid = 1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-16
    • 2021-11-10
    相关资源
    最近更新 更多