标签: syntax

`x` 在这个查询中代表什么?

select 
convert(varchar(10),  TotalSeconds / 3600) +':'+
convert(varchar(10),   TotalSeconds % 3600 / 60) +':'+ 
 convert(varchar(10),  TotalSeconds % 60) as Seconds
from
(select
  DateDiff
(second, date,outtime )
 as TotalSeconds 
    from attendance.attn_card_register) x -- this one
Run Code Online (Sandbox Code Playgroud)

sql-server syntax alias

2
推荐指数
2
解决办法
7764
查看次数

将数据库从 SQL Server 2005 升级到 2012 发现语法错误

我最近从 SQL Server 2005 升级到 2012。但是在验证过程中,发现了一个错误。

某个触发器的编码如下:

CREATE TRIGGER [dbo].[trigger] on [dbo].[foo]
FOR UPDATE, UPDATE
AS
    UPDATE foobar
    SET datetime = GetDate()
    FROM bar
    WHERE foobar.id = bar.id
GO
Run Code Online (Sandbox Code Playgroud)

我可以在 SQL Server 2005 上安全地执行这个(奇怪的)。

但是,在 SQL Server 2012 上,它会引发(我所期望的)语法错误。

语法错误:触发器声明中操作“UPDATE”的重复规范。

为什么这不会在 SQL Server 2005 上引发语法错误?我在这方面的 google-fu 失败了。

为什么这似乎适用于 SQL Server 2005?

trigger sql-server-2005 syntax sql-server-2012

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

为什么在构造具有一个元素而不是两个元素的行时需要 ROW 关键字?

在 PostgreSQL 11 中,以下表达式

UPDATE test_table SET ("column_a","column_b") = ('value-a','value-b') WHERE "column_a" = 'value-c' 
Run Code Online (Sandbox Code Playgroud)

被接受并执行更新。

但是对于单个列/值,例如

UPDATE test_table SET ("column_a") = ('value-a') WHERE "column_a" = 'value-c'
Run Code Online (Sandbox Code Playgroud)

它给出了一个错误。ROW必须提供,例如

UPDATE test_table SET ("column_a") = ROW ('value-a') WHERE "column_a" = 'value-c'
Run Code Online (Sandbox Code Playgroud)

有没有解释为什么选择这种行为?如果ROW缺少,是否有歧义?

postgresql syntax row

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

如何在“IN”语句中使用关键字“VALUES”?

我在 sql server 2016

select @@version
Run Code Online (Sandbox Code Playgroud)

Microsoft SQL Server 2016 (SP2-CU15) (KB4577775) - 13.0.5850.14 (X64) Sep 17 2020 22:12:45 版权所有 (c) Microsoft Corporation Enterprise Edition:Windows Server 2012 R2 上的基于内核的许可(64 位)数据中心 6.3(内部版本 9600:)(管理程序)

在 sql server 中的一个简单插入语句中,我有关键字 values

例如:

BEGIN TRANSACTION T1
SELECT @@TRANCOUNT

INSERT INTO [APCore].[usr].[userBusinessArea]
           ([businessAreaID]
           ,[userID])
     VALUES
           (21, 368), 
           (21, 227419) ,
           (21, 99906), 
           (21, 140470)


SELECT [1]= @@TRANCOUNT
--COMMIT TRANSACTION T1
--ROLLBACK
SELECT [2]=@@TRANCOUNT
Run Code Online (Sandbox Code Playgroud)

问题是,在我运行插入之前,我想使用与 相同的逻辑values来找出这些记录中是否已经有任何记录在表中。

否则你可能会得到这样的结果:

在此处输入图片说明

我的做法是:

select top 10 * from
[APCore].[usr].[userBusinessArea]
where …
Run Code Online (Sandbox Code Playgroud)

sql-server query syntax insert select

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

为什么 ASC 和 DESC 出现在 *CASE 子句之后?

此查询有效:

DECLARE @Ordering NVARCHAR(50)
SET @Ordering = 'aggregateid'

DECLARE @OrderDirectionInt INT
SET @OrderDirectionInt = 0 --1

SELECT * FROM (
    SELECT
        ROW_NUMBER() OVER (ORDER BY
            CASE WHEN LOWER(@Ordering) = 'aggregateid' AND @OrderDirectionInt = 1 THEN AggregateId END DESC,
            CASE WHEN LOWER(@Ordering) = 'aggregateid' AND @OrderDirectionInt = 0 THEN AggregateId END ASC
        ) AS RowNumber,
        MyField
    FROM
        MyTable
) AS TempResults
WHERE TempResults.RowNumber BETWEEN 12 AND 23
Run Code Online (Sandbox Code Playgroud)

我不明白的是,为什么ASCDESC(或外)的CASE语句。看起来ASCDESC被无条件地放入,这是没有意义的......它可能会解决:

ROW_NUMBER() …
Run Code Online (Sandbox Code Playgroud)

sql-server syntax

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

SQL80001 - ')' 附近的语法不正确

在下面的代码(我继承的)中,我收到消息“SQL80001 - ')' 附近的语法不正确”,错误出现在从底部算起的第三行,带有 + 号。我已经看过类似问题的这个答案,但这不是这里的问题。

select
b.batch_id,
b.submitted_dt,
b.batch_nm,
b.paused_cd,
b.job_cnt,
b.start_dt,
b.finish_dt,
m.module_nm,
m.module_id,
mc.hostname
from
    tbl_bat_chess b,
    tbl_job_bobs j,
    tbl_man_holes m,
    tbl_monkey_cokes mc
where
b.finish_dt is null
and  to_char(b.submitted_dt, 'DD-MON-YYYY') = to_char(sysdate, 'DD-MON-YYYY')
and  (to_number(sysdate - b.submitted_dt) * 1440)  >  5 -- 5 minutes
and b.batch_id = j.batch_id
and b.batch_nm like '%EXAMPLE%'
and j.module_id = m.module_id
and m.proc_group_id not in (10, 18)
and j.machine_id = mc.machine_id (+)
group by b.batch_id, b.submitted_dt, b.batch_nm, b.paused_cd, b.job_cnt, b.start_dt, …
Run Code Online (Sandbox Code Playgroud)

oracle join syntax plsql-developer

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

语法错误帮助

我有这个脚本可以正常工作,但是当我更改目录路径时,它似乎收到此语法错误“字符串后未关闭的引号”会导致这种情况的问题。

DECLARE @db VARCHAR(50), 
@sql NVARCHAR(400),
@country varchar(100)
DECLARE barcardi cursor for 
select [ProjectDB] from [DBA].[dbo].[BacardiExport] order by [Country] asc
open barcardi 
fetch next from barcardi into @db
while @@FETCH_STATUS = 0
    begin
        set @country = (select country from [DBA].[dbo].[BacardiExport] where [ProjectDB] = @db)
        set @sql = 'BACKUP DATABASE ['+@db+'] TO  DISK = N''D:\ConfirmitN02BackupNew\BacardiProjectBackup\Bacardi_'+@country+'_'+@db+'.bak'' WITH NOFORMAT, NOINIT, SKIP, NOREWIND, NOUNLOAD,  STATS = 10'
        exec sp_executesql @sql
        --print @sql

        set @country = (select country from [DBA].[dbo].[BacardiExport] where [ProjectDB] = @db)
        set …
Run Code Online (Sandbox Code Playgroud)

sql-server syntax

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

将引号放在整数列的 WHERE 子句中有什么后果?

我有一个包含some_column数据类型列的表integer
我注意到我的 PostgreSQL 10.6 实例足够智能,可以将以下两个查询解释为相同:

select * from my_table where some_column = 5; -- no quotes

select * from my_table where some_column = '5'; -- quotes added
Run Code Online (Sandbox Code Playgroud)

在列的where子句中添加引号有什么影响integer
它会对一个包含 2000 万行的大表产生性能影响吗?
(有一个索引some_column。)

postgresql performance syntax postgresql-10 query-performance

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

在 plpgsql 的存储过程中使用参数

我正在尝试返回重叠多边形的数量。问题是它抱怨我的“$1”标志:

Error is "SQL state: 42601", syntax error at "$1". 
Run Code Online (Sandbox Code Playgroud)

为什么是这样?我在这里完全是初学者,除了用符号引用参数之外,我无法在网上找到解决方案$

CREATE OR REPLACE FUNCTION any_overlap (x text) 
RETURNS integer AS $$
DECLARE amount INTEGER;
BEGIN
    SELECT COUNT(*) INTO amount FROM $1 a
    INNER JOIN $1 b ON 
    (a.polygon && b.polygon AND ST_Relate(a.polygon, b.polygon, '2********'))
    WHERE a.ctid != b.ctid;
    RETURN amount AS id;
END; $$ LANGUAGE plpgsql;
Run Code Online (Sandbox Code Playgroud)

postgresql syntax dynamic-sql plpgsql postgis

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

SQL where 子句对表的影响?

我有 sql 查询作为

select sourceIP, sum(sourceBytes) 
from flows
group by sourceIP
order by sum(sourceBytes) desc
Run Code Online (Sandbox Code Playgroud)

这带来的结果(虚拟)为:-

sourceIp     SourceBytes
192.168.1.2  100
192.168.1.3  79
192.168.1.4  67
192.168.1.5  4
192.168.1.6  4
Run Code Online (Sandbox Code Playgroud)

现在,如果我将查询更改为

select sourceIP, sum(sourceBytes) 
from flows
where sourceBytes > 50
group by sourceIP
order by sum(sourceBytes) desc
Run Code Online (Sandbox Code Playgroud)

输出为

 sourceIp        SourceBytes
 192.168.1.2     150
 192.168.1.3     40
Run Code Online (Sandbox Code Playgroud)

我现在无法访问数据库,我无法拉/显示真实的表值,但这里我想用greaterthen 语句说明输出已更改。我是第二个查询的视图,我只想处理结果而不是将flows表中的所有值处理为更大范围的值,即 50。我想知道这两个查询的级别不同。谢谢。

syntax

0
推荐指数
1
解决办法
59
查看次数

如何在不丢失自动创建的索引的情况下删除约束?

如何在不丢失自动创建的索引的情况下删除约束?

如果可以使用单个查询。

index oracle constraint syntax

0
推荐指数
1
解决办法
2345
查看次数

为什么不能在窗口函数中聚合后进行基本操作?像 (max(x)+5), vs (5+max(x))

聚合和窗口函数的语法令人困惑,这不起作用,

SELECT (max(x)+5) OVER ()
FROM generate_series(1,10) AS t(x);
Run Code Online (Sandbox Code Playgroud)

虽然这有效

SELECT 5+max(x) OVER ()
FROM generate_series(1,10) AS t(x);
Run Code Online (Sandbox Code Playgroud)

如果运算符是可交换的,那很好,但我试图将间隔除以秒(在我的特定情况下,尽管我解决了它)。有没有办法简化这个。

SELECT (max(x)/5) OVER ()
FROM generate_series(1,10) AS t(x);
Run Code Online (Sandbox Code Playgroud)

所以不需要另一个封装查询?这是一个 PostgreSQL 的东西,还是一个 SQL 的东西?有没有办法消除查询的歧义?

postgresql syntax aggregate window-functions

0
推荐指数
1
解决办法
218
查看次数

如何通过 SQL 查询识别 SQL Server 品牌

第三方 API 公开接受“SQL”查询的端点。他们的示例是简单的SELECT语句,但我想编写更复杂的查询。

他们没有指定他们使用的是哪个 SQL 品牌,这意味着我不知道应该遵循的确切语法。

如何使用一个或多个 SQL 查询(无命令行访问、文件权限等)识别 SQL 品牌(SQL Server、MySQL、Azure SQL、Postgres 等)?

query syntax database-theory relational-theory

0
推荐指数
1
解决办法
69
查看次数