很抱歉,但我之前从未做过如此复杂的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个。
提前感谢您的任何帮助或指示。
答案 0 :(得分:3)
您的整个WHERE
不正确。查询只能包含 ONE where
子句。您使用and
和or
加入了多个条件,而不是and where
:
WHERE foo AND bar // correct
WHERE foo AND WHERE bar // syntax error
答案 1 :(得分:0)
查看MySQL Date and Time Functions。例如,我并不完全确定最后一个WHERE子句试图做什么,但我相信第一部分可以重写为:
SELECT *
FROM patientlist
WHERE `date` - interval `weekspreg` week
between now() - interval 29 week
and now() - interval 30 week