【问题标题】:returning null or empty string in "IN CLAUSE" mysql php在“IN CLAUSE”mysql php中返回null或空字符串
【发布时间】:2017-05-16 14:34:08
【问题描述】:

我有这个问题:

SELECT * from tbl WHERE id = 1 AND option IN (1,2,3) 

表:

+-------+---------+-------+
| id    | option  | votes |
+-------+---------+-------+
|   1   |    1    |  100  |
|   1   |    2    |  150  |
+-------+---------+-------+

由于表中尚不存在选项 3,我希望它返回 null / 空字符串,因此我可以在我的 php 代码中将 'votes' 设置为 0。

目前它只按预期为我提供选项 1 和 2 的行。

【问题讨论】:

  • 如果您的查询没有返回给定选项的任何数据,您可以在 PHP 中执行此操作
  • IN 所做的是将您提供的任何 ID 与数据库中的 ID 进行匹配。 IN 中的所有 id 不一定必须在您的数据库中。把它想象成OR 声明。
  • 如果您需要额外的选项行,则必须从 PHP 代码中完成,因为您将获得 1 和 2 的行,如果您没有 3,请在 PHP 中将投票分配给 0。
  • @ShaunakShukla 我要做的是每当在 DB 中找不到该选项时将空元素插入结果数组,然后循环遍历结果数组以将空值/null 设置为 0 php。我不知道我这样做是否正确

标签: php mysql


【解决方案1】:
SELECT * from tbl t1
RIGHT JOIN 
(SELECT 1 AS opt UNION ALL
 SELECT 2 AS opt UNION ALL
 SELECT 3 AS opt UNION ALL
) t2
ON t1.option = t2.opt
WHERE t1.id = 1 

【讨论】:

  • 我会尝试使用动态生成的选项来实现它。感谢您的帮助
猜你喜欢
  • 2013-01-02
  • 2012-01-02
  • 2020-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-12
  • 2012-09-18
相关资源
最近更新 更多