很抱歉问你,但我以前从未做过如此复杂的MYSQL查询,而且我真的不知道该用谷歌搜索什么才能得到答案。
我有一个精心制作的数据库,里面有一张孕妇预约表,包括她们来的日期和当时怀孕的周数。我正在尝试选择每一个现在应该是30周的,但在怀孕25周后还没有单独的条目。我使用电话号码来唯一识别每个人。
由于我真的不知道如何制定这个查询,所以这是我想到的最好的查询。
SELECT * FROM patientlist WHERE
UNIX_TIMESTAMP() - (UNIX_TIMESTAMP(`date`) - `weekspreg`*604800) > 29*604800
AND
UNIX_TIMESTAMP() - (UNIX_TIMESTAMP(`date`)- `weekspreg`*604800) <= 30*604800
AND
/* a subquery that keeps out results where the phone number would show up elsewhere in the table for a woman with more than 25 weeks of pregnancy. */
必须有一个更好的解决方案,而不是通过电话号码分别查询日期范围内的每个结果,看看周数是否超过25。
提前感谢您的帮助或指导。
您的整个WHERE
不正确。查询只能有ONEwhere
子句。您使用and
和or
而不是and where
:加入多个条件
WHERE foo AND bar // correct
WHERE foo AND WHERE bar // syntax error
查看MySQL的日期和时间函数。例如,我不完全确定最后一个WHERE子句要做什么,但我相信第一部分可以重写为:
SELECT *
FROM patientlist
WHERE `date` - interval `weekspreg` week
between now() - interval 29 week
and now() - interval 30 week