标签: query

这些查询会返回相同的结果吗?

我有这个简单的查询:

SELECT 
    friend_id
FROM
    default_friend
WHERE
    user_id = 1
Run Code Online (Sandbox Code Playgroud)

结果如下:

+-----------+
| friend_id |
+-----------+
|      2250 |
|      4901 |
|      7187 |
|      9337 |
|      9843 |
+-----------+
Run Code Online (Sandbox Code Playgroud)

现在我有这个查询也有点复杂:

SELECT 
    friend_id, user_id, approved
FROM
    default_friend
WHERE
    user_id = 1
        AND (friend_id IN (SELECT 
            friend_id
        FROM
            default_friend
        WHERE
            user_id = 1))
        AND approved = 0
Run Code Online (Sandbox Code Playgroud)

我的问题是:进入第二个查询的 SELECT 会返回与第一个查询返回的数据相同的数据吗?意思是friend_id = 2250, 4901, 7187, 9337, 9843 还是我需要运行第一个并以编程方式拆分结果并构建第二个?我也想知道哪种方式更合适!

mysql performance query mysql-5.5 query-performance

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

Mysql子查询返回多于1行

SELECT * FROM wp_posts WHERE ID IN 
(
(SELECT courses  FROM wp_category WHERE CatID =401) OR 
(SELECT  meta_value FROM wp_postmeta WHERE  post_id IN (SELECT courses FROM wp_category WHERE CatID =401) AND meta_key ='post_id' )
) 
AND 
ID IN (SELECT post_id FROM wp_locations_courses WHERE location_id = 1120)
Run Code Online (Sandbox Code Playgroud)

我在使用IN子查询时遇到上述查询的问题给了我错误Subquery returns more than 1 row为什么在我使用IN子句时会发生

mysql query subquery select

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

如何在 WHERE 子句中使用 IF...ELSE 条件?

我试图在我的 WHERE 子句中使用 IF...ELSE 构造来有选择地将条件应用于我的SELECT.

这应该工作吗?

CREATE OR REPLACE package body If_Else_Pack IS

    PROCEDURE Moving
    (
        obj_A       IN varchar2,
        obj_B       IN varchar2,
        obj_C       IN varchar2,
        obj_D       IN varchar2,
        cur_Result  OUT T_CURSOR
    ) IS
    BEGIN
        OPEN cur_Result FOR
        SELECT 
            w.assetid,
            w.vehiclenumber,
            w.LatLong,
            w.CurrentSpeed,
            w.timeOfMovement,
            w.CurrentPlace,
            w.curTime,
            w.motion,
            w.fuelR,
            w.VehicleStart
        FROM waypoints1 w
        WHERE 
            IF ((obj_D= '0' OR obj_D IS NULL) AND (obj_C= '0' OR  obj_C IS NULL)) THEN
                WHERE w.customer_id =obj_A
                AND w.delegate_user_id = obj_B;
            ELSE IF ((obj_D= '0 …
Run Code Online (Sandbox Code Playgroud)

query stored-procedures plsql select

5
推荐指数
2
解决办法
10万
查看次数

如何创建此 SQL 查询?

我正在参加斯坦福在线的免费 DB 课程,坦率地说,其中一项练习给我带来了一些麻烦。我有一种感觉,这应该非常简单,所以对于 DBA,我显然不太擅长 SQL。

我们正在使用一个简化的场景来评价电影。

对于同一评论者两次对同一部电影评分并第二次给予更高评分的所有情况,返回评论者的姓名和电影名称。

这是架构:

Movie ( mID, title, year, director ) 
Reviewer ( rID, name ) 
Rating ( rID, mID, stars, ratingDate ) 
Run Code Online (Sandbox Code Playgroud)

我应该怎么做?

query

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

使用连接返回同一列的多个值?

我有两张桌子

  1. 用户

Rank表中,我保存了rank_idsupervisor_id。在Rank表中,我存储了rank名称。在rank_idsupervisor_id来自外键Rank表。

由于我必须同时选择rank_idsupervisor_id从同一个表(Rank),我如何加入两个表以得到结果namerank namesupervisor

数据线

CREATE TABLE IF NOT EXISTS `user` (
  `id` int(9) NOT NULL AUTO_INCREMENT,
  `Name` varchar(90) NOT NULL,
  `rank_id` int(4) NOT NULL,
  `supervisor_id` int(4) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;

--
-- Dumping data for table `user`
--

INSERT INTO `user` (`id`, `Name`, `rank_id`, …
Run Code Online (Sandbox Code Playgroud)

mysql join query mysql-5.5

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

每年重置一个序列

每次在下表中添加新行时,我希望序列(Import Permit No)在新的一年中增加1....20160001、20160002等并重置为20170001、20170002等。

CREATE TABLE [dbo].[tblPermits](
[ImportPermitID] [int] IDENTITY(1,1) NOT NULL,
[ImportPermitNo] [nchar](20) NULL,
[ImporterName] [int] NULL,
[Province] [varchar](50) NULL,
[LodgementDate] [datetime] NULL,
[PortofEntry] [int] NOT NULL,
[EstDateofArrival] [datetime] NULL,
[ConsignmentInvoicePONo] [varchar](50) NULL,
[OtherImportConditions] [varchar](400) NULL,
[Supplier] [int] NOT NULL,
[SupplierCountry] [varchar](50) NULL,
[CountryofOrigion] [int] NOT NULL,
CONSTRAINT [PK_tblPermits] PRIMARY KEY CLUSTERED 
(
[ImportPermitID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO
Run Code Online (Sandbox Code Playgroud)

目前我拥有的是一个触发器,如下所示。

ALTER TRIGGER …
Run Code Online (Sandbox Code Playgroud)

sql-server query sequence sql-server-2008-r2

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

查询计划问题

我创建了一个 varbinary 哈希来检查 2 个表之间的更改。

这是执行计划,我对索引有点困惑,或者确实有更好的编写方式。 https://www.brentozar.com/pastetheplan/?id=HkHmqoczm

连接中的 2 列是目标中的 PK,并且在源中具有非聚集索引。困扰我的一点是排序导致的 tempdb 溢出。

sql-server query execution-plan update

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

从起始范围选择所有重叠范围

我的问题与这个问题类似,(我认为)有足够大的差异。我有一个基本范围,我想在一个表中找到所有其他范围与它和彼此冲突。或者更确切地说是形成范围的项目,但它并没有真正产生影响。

带星号的那一行是起始范围。范围 1,2 和 3 是应该扩展它的范围。结果范围应该是 X。

1 | 
3 |    ===1====            ====
5 | ==2==    ====*====           ====
6 |             ====3====     =====          
--+-------------------------------------
  | |<--------X-------->|
Run Code Online (Sandbox Code Playgroud)

我写过这个:

WITH   cte
AS (
    SELECT DATA1.ID, DATA1.STARTDATE, DATA1.ENDDATE
    FROM DATA1
    WHERE 
    DATA1.ID = @PARID AND 
    DATA1.STARTDATE > @STARTDATE AND 
    DATA1.ENDDATE < @ENDDATE 

    UNION ALL

    SELECT DATA1.ID, DATA1.STARTDATE, DATA1.ENDDATE
    FROM cte 
    INNER JOIN DATA1 ON (DATA1.ID = cte.ID)
    WHERE 
    DATA1.ID = @PARID AND 
    (cte.STARTDATE < DATA1.ENDDATE AND cte.ENDDATE > DATA1.ENDDATE)
) …
Run Code Online (Sandbox Code Playgroud)

sql-server query interval

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

查询所有 Postgres 配置参数的当前值?

您可以通过手动编辑文件或调用命令来为 Postgres设置各种配置参数。这是编写设置的两种途径,但是阅读呢?postgresql.confALTER SYSTEM

? 有没有办法查询所有当前设置?

我知道客户端身份验证配置文件中的设置pg_hba.conf可以通过读取pg_hba_file_rules来看,是这样的:table pg_hba_file_rules ;。有类似的东西postgresql.conf吗?

postgresql query configuration

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

值重置之间的累积持续时间

--DROP TABLE Taco_Val;
CREATE TABLE Taco_Val
(
    ID          INT IDENTITY(1,1),
    AuditID     VARCHAR(5),
    CreditID    VARCHAR(10),
    TS          DATETIME,
    Val         BIT
);

INSERT INTO Taco_Val
VALUES
 ('a1', 1, '2018-08-09 19:24:39.823',   1),--> Started 
 ('ac', 1, '2018-08-09 20:53:07.273',   0),
 ('as', 1, '2018-08-09 21:04:40.670',   0),
 ('a9', 1, '2018-08-09 21:14:17.660',   1),--> Another Seq
 ('av', 1, '2018-08-09 21:38:56.910',   1),
 ('ad', 1, '2018-08-09 21:48:46.180',   1),
 ('an', 1, '2018-08-09 22:00:15.650',   0),
 ('a4', 1, '2018-08-09 22:08:26.517',   1),-->Another Seq
 ('a8', 1, '2018-08-09 22:16:16.253',   0),
 ('a3', 1, '2018-08-09 22:16:24.247',   1),-->Another Seq
 ('ai', 1, …
Run Code Online (Sandbox Code Playgroud)

sql-server query sql-server-2012 running-totals

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