【问题标题】:Return the string equivalent of a SELECT that only returns one value返回与仅返回一个值的 SELECT 等效的字符串
【发布时间】:2016-02-03 09:17:33
【问题描述】:

我有一个 SELECT 查询,它只返回一个值(不是一行,而是一个“事物”)。好像

SELECT IF( EXISTS( SELECT * FROM `Blah` WHERE <whatever> ), 1, 0);

我试着摆弄mysqli_result::fetch_assocmysqli_result::fetch_objectmysqli_result::fetch_array,所有这些都非常奇怪。对于像这样的特殊情况,是否有一个 mysqli_result::fetch_string,它只输出一个我可以调用 intval 的字符串?

【问题讨论】:

  • 是一个“东西”是你表中的一行吗?如果是,那你为什么不写 select thing FROM Blah WHERE
  • 你可以在PHP中使用mysql_num_rows(),基于WHERE,它将是0或1
  • @SandeepBhandari 不完全是,我需要在另一个表上执行一个操作,该操作取决于该表中存在的条目。
  • 嗯很好!!!那么我猜@casraf 的答案就是你要找的:D

标签: php sql mysqli


【解决方案1】:

你可以这样做:

SELECT IF( EXISTS( SELECT * FROM `Blah` WHERE <whatever> ), 1, 0) AS exists;

并使用上面的任何函数来获取行号 0 的“存在​​”列。

【讨论】:

  • 啊,谢谢!我对 SQL 不太熟悉,完全忘记了那个功能......
【解决方案2】:

除了 casraf 的回答之外,另一种选择可能是将计数纳入其中 - 您可能希望稍后找出符合您的条件的 blah 的数量。当您在几年后重新访问您的代码时,可能会更容易回读。

SELECT count(*) cnt FROM `Blah` WHERE <whatever>

您可以对“cnt”变量进行布尔检查(即计数为 0 == false),但也可以使用它来找出您有多少匹配项。

【讨论】:

  • 好提示,如果 OP 认为未来范围可能更大,我建议这样做。
猜你喜欢
  • 2021-05-18
  • 1970-01-01
  • 2016-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-29
  • 2016-08-27
  • 2011-07-17
相关资源
最近更新 更多