谁能向我解释以下两个查询之间的区别?尽管它们看起来相同,但结果却不同。
select concept.concept_id, concept.PARENT_ID
from ebti_thes_concept_v concept
start with PARENT_ID = '11025'
connect by parent_id = prior concept_id
and exists (..)
Run Code Online (Sandbox Code Playgroud)
在第二个中,exists谓词从connect by子句移动到where子句。
select concept.concept_id, concept.PARENT_ID
from ebti_thes_concept_v concept
where exists (..)
start with PARENT_ID = '11025'
connect by parent_id = prior concept_id;
Run Code Online (Sandbox Code Playgroud) 我有一些查询需要获取 64 个以上的特定行,例如这个带有 65 个 ID 的示例。TableID 为主键,类型为 BigInt。
SELECT * FROM TableA
WHERE TableID IN (260905384, 260915601, 260929877, 260939625, 260939946, 261096977, 261147037, 261152934, 261163936, 261357728, 261369122, 261376714, 261454472, 261488500, 261527284, 261584786, 261619749, 261679560, 261777653, 261786639, 261795246, 261795810, 261803724, 261821199, 261824173, 261827397, 261840197, 261848595, 261874545, 261889122, 261889355, 261929793, 261953069, 262106609, 262134069, 262134088, 262339745, 262354363, 262360015, 262571936, 262586920, 262591486, 262663776, 262703601, 262746674, 262792439, 262801544, 262826561, 262933229, 262933270, 262947539, 262958110, 263021588, 263032875, 263037208, 263039292, 263045038, 263085369, 263089147, 263091427, 263097644, 263100021, 263103339, 263104396, …Run Code Online (Sandbox Code Playgroud) 我有一个ROAD表,每行的每个顶点都有一行:
+---------+--------------+-------------+
| ROAD_ID | VERTEX_INDEX | MEASURE_VAL |
+---------+--------------+-------------+
| 1 | 1 | 0 |
| 1 | 2 | 1.2 |
| 1 | 3 | 2.8 |
| 1 | 4 | 4.0 |
| 1 | 5 | 4.3 |
| 1 | 6 | 6.7 |
| 1 | 7 | 7.1 |
+---------+--------------+-------------+
| 2 | 1 | 0 |
| 2 | 2 | 5.2 |
| 2 | 3 …Run Code Online (Sandbox Code Playgroud) 有没有办法在 COUNT 中有 WHERE 子句?或者如何用一些条款来计算?
select
a
b,
count(c where t1.u='UAE') as c1
from t1
Run Code Online (Sandbox Code Playgroud)
我正在使用 MS SQL Server 2014
我使用 PostgreSQL 和以下数据库架构:
CREATE TABLE plans (
slug VARCHAR(500) PRIMARY KEY
);
CREATE TABLE users (
id VARCHAR(16) PRIMARY KEY,
org_id VARCHAR(16) NOT NULL
);
CREATE TABLE orgs (
id VARCHAR(16) PRIMARY KEY,
plan_slug VARCHAR(500) NOT NULL,
last_write_at DOUBLE PRECISION
);
Run Code Online (Sandbox Code Playgroud)
就我而言,我想编写一个查询来更新某些组织plan_slug并保护它免受其他可能的并发更新的影响。为此,我SELECT在子查询中使用 a 并按FOR UPDATE特定顺序锁定行以避免死锁。就像下面的查询一样:
UPDATE orgs
SET plan_slug = 'plan_1'
WHERE id = ANY(
SELECT subquery_orgs.id
FROM orgs AS subquery_orgs
JOIN users ON users.org_id = subquery_orgs.id
WHERE users.id = ANY('{user_1, user_2, user_3}')
ORDER …Run Code Online (Sandbox Code Playgroud) 我正在尝试过滤具有非唯一事务 ID 的表,该表已连接到 1 个公共列上的产品表。过滤器需要如下:
equal to :group1 AND
NOT equal to :group2 AND
NOT equal to :group3
Run Code Online (Sandbox Code Playgroud)
我最初从以下查询开始,但没有AND rk_group <> ____条件。
SELECT COUNT(DISTINCT txn_id)
FROM 1_txns
INNER JOIN 2_products USING (sku)
WHERE rk_group = :group1
AND rk_group <> :group2
AND rk_group <> :group3
;
Run Code Online (Sandbox Code Playgroud)
我也试过
SELECT COUNT(DISTINCT txn_id)
FROM 1_txns
INNER JOIN 2_products USING (sku)
WHERE rk_group NOT IN ( :group2, :group3)
;
Run Code Online (Sandbox Code Playgroud)
我还尝试了多种连接和 IN() 和 NOT IN() 的组合,它仍然返回所有团队 ID,包括那些存在 NOT 组的团队 ID。
有人可以指出我正确的方向吗?
与查询相关的架构信息:
table 1_txns …Run Code Online (Sandbox Code Playgroud) 我有一个基本的 WHERE IN 查询需要很长时间(30 秒以上)来处理。
DELETE FROM `table1`
WHERE ( djID, localID )
IN (("128","26"),("110","32"))
Run Code Online (Sandbox Code Playgroud)
我正在查询的表有大约 2000 万行,有两个索引 - 第一个是名为 ID 的自动递增的 PK,第二个索引超过两列 - djID,localID
我想知道 MySQL 是否在查询中的每个 ( djID, localID ) 之后重新索引表,因此考虑了很长的查询时间,如果是这样,有没有办法强制它等到所有 ( djID, localID ) ) 在重新索引之前已在查询中执行了集合?
还是有其他原因跳出可能导致查询时间过长?
我在 Postgres 数据库中有一个表TEXT,其中有一列名为data,我用它来存储 IP 地址和域名。我想知道是否可以选择表中data列为有效 IP 地址的所有行。
WHERE可以使用基于类型转换的子句来完成此操作吗?
有一个返回数组的函数,在查询中我们使用该函数返回结果,例如:
{"TUNDUMA GOING (BORDER)","ARRIVAL DATE",09/01/2016,22,"AT CHECKPOINT"}
{"TUNDUMA RETURN (BORDER)","DEPARTURE DATE",29/01/2016,2,"ON THE ROAD"}
Run Code Online (Sandbox Code Playgroud)
我们如何添加一个WHERE子句,该子句将仅通过搜索ON THE ROAD值的数组的第 5 列进行过滤?
有没有办法参考array[4]?
试过
where trip_status(tlid) <@ array['AT CHECKPOINT']::varchar
Run Code Online (Sandbox Code Playgroud)
同trip_status()是一个返回数组的功能,但我发现了以下错误:
Run Code Online (Sandbox Code Playgroud)Query failed: ERROR: operator does not exist: character varying[] <@ character varying LINE 6: ...ere trip_closed(tlid)=false and trip_status(tlid) <@ array[ ... ^ HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.
类似的东西where trip_status(tlid)[4] = 'AT CHECKPOINT'存在吗?
我正在处理这张表:
mysql> describe dispositivos;
+-----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| sn | varchar(25) | NO | PRI | NULL | |
| device_id | varchar(25) | YES | | NULL | |
| ip_adress | varchar(25) | YES | | NULL | |
+-----------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
我注意到当我输入这样的查询时:
mysql> select * from dispositivos WHERE sn = "SAL1027TVGH";
+-------------+---------------+------------------+
| sn | device_id | ip_adress |
+-------------+---------------+------------------+
| …Run Code Online (Sandbox Code Playgroud)