【发布时间】:2020-12-13 21:37:24
【问题描述】:
我有一张桌子:
消息:
虽然我能够在多个查询中选择所需的消息,但我需要在一个查询中完成:
这是我目前的疑问:
$queryOne = "SELECT `id`, `title`, `body`, `created_on` FROM `fcm_messages` WHERE `city`='$city' AND `street`='$street' AND `building`='$building'";
$queryTwo = "SELECT `id`, `title`, `body`, `created_on` FROM `fcm_messages` WHERE `city`='$city' AND `street`='$street' AND `building`='-'";
$queryThree = "SELECT `id`, `title`, `body`, `created_on` FROM `fcm_messages` WHERE `city`='$city' AND `street`='-' AND `building`='-'";
$queryFour = "SELECT `id`, `title`, `body`, `created_on` FROM `fcm_messages` WHERE `city`='-' AND `street`='-' AND `building`='-'";
我需要一个查询,因为我可以使用 ORDER BY id DESC 对所有消息进行排序,非常适合我的需要。
我可以对我现在的查询应用相同的排序,但它会给出相同的结果,因为稍后它们会被一个接一个地推入数组中,并且顺序会混乱。
【问题讨论】:
-
那么,将所有查询中的现有 WHERE 子句加入 OR ...?
-
@CBroe 意思是我应该只做 $queryOne 或 $queryTwo 或 $queryThree 或 $queryFour?
-
不,当然不是,这甚至没有意义。进行一个查询,使用
WHERE (…) OR (…) OR … -
请注意,将未知值存储为 NULL 有一个约定
标签: php mysql sql select where-clause