【发布时间】:2019-06-26 10:44:49
【问题描述】:
我正在尝试在 PHP 中运行一个 SQL 查询,该查询应该基于以下两个字段返回一行:
- first_shown_date
- last_shown_date
我正在尝试根据以下条件选择一行:
-
last_shown_date= 今天的日期,如果为假则: -
first_shown_date= 0000-00-00,如果为假则: -
last_shown_date最旧的日期,这将是默认的
我当前的查询给了我错误的行,因为我有一行 last_shown_date 设置为今天的日期,所以这是应该显示的行,但实际显示的行是那一行last_shown_date 中最早的日期。
我似乎无法弄清楚这一点,而不是“OR”,它理想地用作“IF ELSE”语句,因此如果规则 #1 失败,则选择下一个,但如果规则 # 1 是真的,然后使用那个而不是下一个。 我尝试了 if 语句和 CASE,但它们也没有按需要工作。
这是我目前拥有的代码:
SELECT
`id`,
`content`
FROM `".USED_TBL."`
WHERE
`last_shown_date` = '$dateDB' OR (`last_shown_date` != '$dateDB' AND
`first_shown_date` = '0000-00-00' OR(`first_shown_date` != '0000-00-00' AND
`last_shown_date` < '$dateDB'))
AND `status` != 2
ORDER BY
`last_shown_date` ASC
LIMIT 1
【问题讨论】:
-
也许使用
case语句来返回结果。 -
我试过了,因为这两种情况都是正确的,所以它都返回了,虽然因为我将它限制为 1,所以只有 1 个结果通过,但是错误的,我需要结束或退出在发现为真的第一个条件之后
标签: php sql if-statement conditional-statements