【发布时间】:2019-05-18 00:20:59
【问题描述】:
我有一个运行正常的简单查询,但需要检查的条件很少。这是使用 AND 运算符完成的,我想知道当 OR 条件失败时我们如何确定实际值。
场景: 我们有 3 列 is_blocked、is_verified、is_active 假设第 1 行有
is_blocked=0
is_verified=0
is_active=0
当每个条件失败时,抛出的消息必须不同。
if (is_blocked==1) msg=your account has been blocked.
if (is_active==0) msg=your account is no longer active.
if (is_verified==0) msg=you need to verify your account.
查询 1:
"
SELECT *
from users
WHERE is_blocked = 0
AND is_verified = 1
AND is_active = 0
AND emailid = 'emailid'
"
对于上面的例子,上面的查询将返回 FALSE 值。有没有办法让我通过单个查询来确定查询中的哪个条件失败,以及实际值是什么。 所以预期的输出将是 is_verified=1
我尝试过在 PHP 中使用类似这样的 if 条件。
if (is_blocked=0)
SELECT * from users users WHERE is_verified=1 AND is_active=1
等等…… 我不确定这是否是一个好习惯。
【问题讨论】:
-
你看过 MySQL
if吗? dev.mysql.com/doc/refman/8.0/en/if.html 或casedev.mysql.com/doc/refman/8.0/en/case.html -
SELECT is_blocked = 0, is_verified = 1, is_active = 0, emailid = 'emailid' FROM users; -
@Strawberry 这不起作用,因为我希望输出指出查询中的哪个条件导致查询失败。在这种情况下,它应该说 is_verified=0。这样我们就知道查询失败了,因为 is_verified 的值为 0
-
@AbraCadaver 我没有检查链接,现在会检查。但我相信 CASE 会像 if 条件一样,我试图找出一种方法让查询说条件失败,因为其中一个变量的值不正确并且变量名是 is_verified =0 我会检查链接虽然.. 谢谢分享
-
我猜我们对“失败”的定义不同