mysql - mysql中的条件
问题描述
我正在尝试使用 MySQL 查询遍历记录,请记住,这个过程必须在数据库中进行,所以我不能使用最好的替代方法,那就是 Python。
Table_a
#animalid calvdate lactationid
animal_A 2015-06-12 1
animal_A 2017-06-10 2
animal_B 2018-08-10 1
Table_b
#animalid milkdate morningmilk midmilk eveningmilk
animal_A 2018-02-16 8 0 8
animal_A 2016-02-12 12 0 12
我的查询
SELECT *, calvdate FROM Table_b
INNER JOIN Table_a ON Table_b.animalid = Table_a.animalid
WHERE TO_DAYS(milkdate) - TO_DAYS(calvdate)<400
GROUP BY Table_b.animalid and milkdate
我的查询的输出
#animalid milkdate morningmilk midmilk eveningmilk calvdate
animal_A 2018-02-16 8 0 8 2015-06-12
如何在不截断 table_b 预期输出的正确记录的情况下从 table_b 中捕获适合 400 天保证金的所有记录:
#animalid milkdate morningmilk midmilk eveningmilk calvdate
animal_A 2018-02-16 8 0 8 2015-06-12
animal_A 2017-02-12 12 0 12 2017-06-10
解决方案
AND
是一个运算符。该表达式Table_b.animalid and milkdate
将参数转换为布尔值并采用逻辑合取(始终为 0)。因此,结果中的每一行都在同一个组中,这就是为什么您在结果中只看到一个。
要按多列分组,请使用逗号:
GROUP BY Table_b.animalid, milkdate
推荐阅读
- python - 使用 Python 保存 AutoCAD 文件 (.dwg)
- jquery - 单击导航按钮时,Bootstrap Collapse 未关闭
- c++ - 如何在 Windows 或 Linux 上使用 Skia
- vue.js - 是否可以在 vue 单个文件组件而不是单独的文件中进行测试?
- sql-server - 即使使用 u 作为关键字搜索,SQL CONTAINS 函数也不显示带有“under”一词的记录
- c++ - 关于模板实例化点的一些问题
- javascript - 打开邮递员传递要执行的信息
- android - P2P 多人安卓 NAT 穿越解决方案/库?
- java - 如何将opencv Mat坐标转换为android中的布局坐标?
- java - 如何为网站添加和使用 cookie?