sql - SELECT 语句返回行,但具有相同 WHERE 的 SELECT COUNT(*) 不返回 (AWS AuroraDB)
问题描述
这是与 User 和 GpsPosition 相关的数据库架构:
CREATE TABLE GpsPosition
(
altitudeInMeters SMALLINT NOT NULL,
dateCreated BIGINT NOT NULL,
dateRegistered BIGINT NOT NULL,
deviceId BINARY(16) NOT NULL,
emergencyId BINARY(16) NULL,
gpsFix SMALLINT NOT NULL,
heading SMALLINT NOT NULL,
horizontalUncertaintyInMeters SMALLINT NOT NULL,
id BINARY(16) NOT NULL,
latestForDevice BOOLEAN NOT NULL,
latestForUser BOOLEAN NOT NULL,
latitude DOUBLE PRECISION NOT NULL,
longitude DOUBLE PRECISION NOT NULL,
numSatellites SMALLINT NOT NULL,
speedInKmph SMALLINT NOT NULL,
stale BOOLEAN NOT NULL,
userId BINARY(16) NULL,
verticalUncertaintyInMeters SMALLINT NOT NULL,
PRIMARY KEY (id)
);
ALTER TABLE GpsPosition
ADD CONSTRAINT GpsPosition_deviceId_fkey
FOREIGN KEY (deviceId) REFERENCES Device(id)
ON UPDATE CASCADE ON DELETE CASCADE;
ALTER TABLE GpsPosition
ADD CONSTRAINT GpsPosition_emergencyId_fkey
FOREIGN KEY (emergencyId) REFERENCES Emergency(id)
ON UPDATE CASCADE ON DELETE SET NULL;
ALTER TABLE GpsPosition
ADD CONSTRAINT GpsPosition_userId_fkey
FOREIGN KEY (userId) REFERENCES User(id)
ON UPDATE CASCADE ON DELETE SET NULL;
ALTER TABLE GpsPosition
ADD CONSTRAINT deviceId_dateCreated_must_be_unique
UNIQUE (deviceId, dateCreated);
CREATE INDEX i2915035553 ON GpsPosition (deviceId);
CREATE INDEX deviceId_latestForDevice_is_non_unique ON GpsPosition (deviceId, latestForDevice);
CREATE INDEX i3210815937 ON GpsPosition (emergencyId);
CREATE INDEX i1689669068 ON GpsPosition (userId);
CREATE INDEX userId_latestForUser_is_non_unique ON GpsPosition (userId, latestForUser);
此语句返回大量行:
select *
from GpsPosition
where exists (select *
from User
where User.id = GpsPosition.userId and
User.id = UNHEX( '3f4163aab2ac46d6ad15164222aca89e' )
);
此语句返回值为 0 的单行(结果):
select count(*)
from GpsPosition
where exists (select *
from User
where User.id = GpsPosition.userId and
User.id = UNHEX( '3f4163aab2ac46d6ad15164222aca89e' )
);
我不明白 SELECT * 语句如何返回许多结果,而 SELECT COUNT(*) 语句返回 0。它们都具有相同的 WHERE 语句。
解决方案
推荐阅读
- javascript - 使用graphql的nestJS中的解析器/服务有什么区别?
- html - 如何在背景大小更改时屏蔽文本
- css - 反应:无法读取未定义的属性“样式”
- php - Azure DevOps - 部署 Magento 2 - 请求实体太大代码 413
- firebase-security - 如果在 Cloud Firestore 中发现电子邮件,则访问更深层次的文档
- laravel - 自定义规则 Laravel Livewire
- java - BizTalk 2020 弃用 WCF-BasicHttp
- c++ - 如何让一个文件包含所有包含?
- c++ - 处理具有不同操作的子类的交互的正确方法是什么?
- python - 如何将 tkinter 上的文本框中的文本保存到文本文件中?