DATE_-6ren">
gpt4 book ai didi

php - SQL - 如果存在则始终返回 1

转载 作者:行者123 更新时间:2023-11-30 22:47:34 25 4
gpt4 key购买 nike

$sql = "SELECT EXISTS (SELECT usernev AS juzernev, SUM(mbsent) AS summ FROM data WHERE datum > DATE_ADD(NOW(), INTERVAL -1 MONTH) AND usernev='csib')'";

我在这个表(数据)上有这个查询 - 第一个列。是 usernev:

| sajtos    |   1323 |   411 | 193.225.249.2  | 10.8.0.10 |  3661 | 2015-03-19 17:25:37 | 87 |
| csib | 318 | 26 | 5.187.169.135 | 10.8.0.6 | 10849 | 2015-03-19 19:11:37 | 88 |
| csib | 5 | 1 | 5.187.169.135 | 10.8.0.6 | 1234 | 2015-03-19 22:50:23 | 89 |
| gyuri | 26 | 31 | 193.225.249.2 | 10.8.0.14 | 3001 | 2015-03-19 22:56:54 | 90 |

所以问题是当我使用这个查询时它返回 1 -> 所以这个查询用户名 csib 有很好的结果。但是当我将 usernev 更改为另一个(不存在)时,它也返回 1。我做错了什么或者我不能用 EXISTS 做吗?

最佳答案

没有group by 的聚合函数总是返回一行。并且,具有一行的查询满足 exists

作为一般规则,我总是使用 select 1exists。无需再选择任何内容:

SELECT EXISTS (SELECT 1
FROM data
WHERE datum > DATE_ADD(NOW(), INTERVAL -1 MONTH) AND
usernev = 'csib'
);

您也可以将此查询写成:

SELECT COALESCE(MAX(1), 0)
FROM data
WHERE datum > DATE_ADD(NOW(), INTERVAL -1 MONTH) AND
usernev = 'csib';

data(usernev, datum) 上有一个索引,两者可能具有相似的性能。否则,第一个会有更好的性能。我只提到这个版本是因为它有一个聚合函数,利用了一个事实,即没有 group by 的聚合查询总是返回一行。

关于php - SQL - 如果存在则始终返回 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29163083/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com