标签: where

WHERE 中的条件与 CONNECT BY 中的条件

谁能向我解释以下两个查询之间的区别?尽管它们看起来相同,但结果却不同。

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)

oracle hierarchy where

5
推荐指数
1
解决办法
2585
查看次数

WHERE IN 语句超过 64 个参数使得 MSSQL 读取太多行

我有一些查询需要获取 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)

sql-server execution-plan parameter sql-server-2016 where

5
推荐指数
1
解决办法
97
查看次数

选择包含行

我有一个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)

oracle where

4
推荐指数
1
解决办法
111
查看次数

用 where 子句计数

有没有办法在 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

sql-server count sql-server-2014 where

4
推荐指数
1
解决办法
9661
查看次数

两个不同表上的并发更新失败

我使用 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)

postgresql deadlock subquery update where

4
推荐指数
1
解决办法
358
查看次数

同一列上的多个 WHERE 条件 =val1 但不 =val2 或 val3

我正在尝试过滤具有非唯一事务 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)

mysql join condition where

3
推荐指数
1
解决办法
2万
查看次数

WHERE IN 查询是否在查询中的每个集合之后重新索引表?

我有一个基本的 WHERE IN 查询需要很长时间(30 秒以上)来处理。

DELETE FROM `table1`
WHERE ( djID, localID )
IN (("128","26"),("110","32"))
Run Code Online (Sandbox Code Playgroud)

我正在查询的表有大约 2000 万行,有两个索引 - 第一个是名为 ID 的自动递增的 PK,第二个索引超过两列 - djIDlocalID

我想知道 MySQL 是否在查询中的每个 ( djID, localID ) 之后重新索引表,因此考虑了很长的查询时间,如果是这样,有没有办法强制它等到所有 ( djID, localID ) ) 在重新索引之前已在查询中执行了集合?

还是有其他原因跳出可能导致查询时间过长?

mysql performance index where query-performance

3
推荐指数
1
解决办法
182
查看次数

在Postgres中,是否可以从表中获取所有行,其中列可以转换为不同的类型?

我在 Postgres 数据库中有一个表TEXT,其中有一列名为data,我用它来存储 IP 地址和域名。我想知道是否可以选择表中data列为有效 IP 地址的所有行。

WHERE可以使用基于类型转换的子句来完成此操作吗?

postgresql cast where

3
推荐指数
1
解决办法
2756
查看次数

在 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()是一个返回数组的功能,但我发现了以下错误:

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.
Run Code Online (Sandbox Code Playgroud)

类似的东西where trip_status(tlid)[4] = 'AT CHECKPOINT'存在吗?

postgresql array where postgresql-9.5

3
推荐指数
1
解决办法
1209
查看次数

mysql 查询仅在将值与主键进行比较时才有效

我正在处理这张表:

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)

mysql select where

3
推荐指数
1
解决办法
47
查看次数