我知道表格
Select * into new_table from old_table
Run Code Online (Sandbox Code Playgroud)
陈述。Bur 最近我在这里和这里找到了 2 个帖子,它们使用它
SELECT * FROM NhlPlayer
INSERT INTO PlayerBackups
Run Code Online (Sandbox Code Playgroud)
我在msdn 中什么也没找到,这是一些新语法还是只是一个错误?我猜后者是因为
INSERT INTO PlayerBackups
SELECT * FROM NhlPlayer
Run Code Online (Sandbox Code Playgroud)
会工作得很好。
我想选择一个 user_id 为 1 和 category_id 的 record_id 可以是 1、2 或 3。每个 SELECT
语句都应该返回 1 条记录。
在此处查看我的示例表:
我如何在 SQL 中做到这一点?我试过这个 SQL 语句:
SELECT record_id
FROM tbl_people
WHERE category_id=1 OR category=id=2 OR category_id=3
OR category_id=4 OR category_id=5 OR category_id=6
AND user_id = 1;
Run Code Online (Sandbox Code Playgroud)
......但它不起作用。
这是我的原始程序,效果很好:
create or replace PROCEDURE EXTRACT_0_CPP AS
CURSOR c_data IS
SELECT cpp,
rfu1,
rfu2,
mean_rfu,
charge_ph7_4,
hydropathy
FROM cpp
ORDER BY LENGTH(cpp);
F1 UTL_FILE.FILE_TYPE;
BEGIN
F1 := UTL_FILE.FOPEN( location => 'EXTRACT_DIR',
filename => '0_cpp.TXT',
open_mode => 'w',
max_linesize => 32767);
FOR cur_rec IN c_data LOOP
UTL_FILE.PUT_LINE (F1,
cur_rec.cpp || ':' ||
cur_rec.rfu1 || ':' ||
cur_rec.rfu2 || ':' ||
cur_rec.mean_rfu || ':' ||
cur_rec.charge_ph7_4 || ':' ||
cur_rec.hydropathy);
END LOOP;
UTL_FILE.FCLOSE(F1);
END;
Run Code Online (Sandbox Code Playgroud)
但是 SQL Developer 在下面给了我一条波浪状的红线,SELECT
并建议我将其更改为:
create or …
Run Code Online (Sandbox Code Playgroud) 我在使用内部联接从两个表中获取唯一值时遇到问题。
\nSELECT distinct cast (opd.order_number as integer), p.payment_id ,\n pt.transaction_status, \n opd.installments_number, \n pt.amount, \n pt.origin_amount,\n p.payment_capture_type,\n opd.brand,\n pt.created_date, \n d."name" \nFROM payment p \nINNER JOIN payment_transaction pt ON pt.payment_id = p.payment_id\ninner join "domain" d on d.domain_id = p.domain_id \nINNER JOIN attempted_online_payment_data opd ON p.payment_id = CAST ( opd.order_number AS INTEGER )\nWHERE \np.created_date >= \'2021-11-01\' and status = 1\n
Run Code Online (Sandbox Code Playgroud)\n这是我正在使用的查询,我想要一个 payment_id\xc2\xb4s 的唯一值列表,但是当我这样做时,由于某种原因它会带来两个相同的 payment_id。
\n\n如何为每个 payment_id 获取唯一的行?
\n我已按照本教程连接到 Microsoft SQL Server。我连接了 Glassfish Server 的 ping 功能,因此我必须授予一些用户权限才能 ping 数据库。
我的问题是我的用户可能无权将外部连接连接到数据库,或者更可悲的是,没有任何权限。在我可以使用我的用户连接到我的数据库之前,应该应用什么样的用户权限?
(我想在访问数据库之前需要一些 GRANTS,因为在 Mysql 上制作它需要很多。现在实际的问题是我无法在这里应用相同的查询,因为 SQL 脚本是不兼容的)
我知道一些知识:
分区用来实现更好的性能(如在描述该文章)
和索引用于提高选择操作的性能。
结果我的问题是:在哪些情况下我应该使用索引,在哪些情况下我应该使用分区表。
换句话说,在不同的操作(选择、删除、更新)索引或表分区中什么应该更好,以及为什么。
谢谢。
我正在尝试写一个游标。我创建了一个表,用于从 sys.dm_exec_sessions 捕获登录名和时间。现在,我需要编写一个游标,以便在登录名已存在的情况下将登录时间更新为上次登录时间,并在表中不存在登录名的情况下插入一行。我想出了以下方法,但不幸的是,我收到一个错误,子查询返回多个值。有任何想法吗???
declare @log as varchar(200)
declare @log_time as datetime
declare LoginsSize cursor for
SELECT login_name, login_time
FROM sys.dm_exec_sessions
open LoginsSize
fetch next from LoginsSize into @log, @log_time
while( @@fetch_status = 0)
begin
If (Select Login from [dbo].[LoginsForDBUserList]) = @log
Begin
UPDATE [dbo].[LoginsForDBUserList]
SET LastLoginTime = @log_time
WHERE [login]= @log
END
Else
Begin
Insert Into [dbo].[LoginsForDBUserList]
SELECT login_name, login_time
FROM sys.dm_exec_sessions
END
fetch next from LoginsSize into @log, @log_time
close LoginsSize
deallocate LoginsSize
end
Run Code Online (Sandbox Code Playgroud) 我的直觉是NULL
将比{}
用作ARRAY[]
PostgreSQL 中列的默认值时占用的空间更少。
我对么?
我想使用 SQL 语句获取日期。例如,如果日期是“2018-08-07”输出,则应返回:“2018-08-14”(一周后)。然后我将获取这些日期之间的总行数。
SELECT count(*) FROM orders WHERE dates BETWEEN '2018-08-07' AND
DATEADD(day,7,'2018-08-07');
Run Code Online (Sandbox Code Playgroud)
但是,由于 dateadd() 函数,我收到此错误:
SQL Error [335544634] [42000]: Dynamic SQL Error; SQL error code = -104; Token unknown - line 1, column 1; DATEADD [SQLState:42000, ISC error code:335544634]
Run Code Online (Sandbox Code Playgroud) 我正在创建一个脚本来自动配置 2 个数据库进行镜像,使用这个方法,但我想确保没有已经创建的端点或主密钥,所以我想首先做一些清理:
DROP ENDPOINT End_Mirroring;
DROP CERTIFICATE PRIM_cert;
DROP MASTER KEY
Run Code Online (Sandbox Code Playgroud)
但是只有当它们已经存在时,我怎么才能做到这些?(我需要这个来避免我的脚本以错误退出)
执行下面的查询时,如果我使用PRINT
它打印正确。我可以复制并粘贴打印的代码并执行它。但是,如果我使用 EXEC,则会出现以下错误:
有没有办法简化我正在做的事情?为什么 SQLPRINT
和 SQL 会EXEC
提供这两种截然不同的结果集?
DECLARE @TableName as NVARCHAR(250), @SQL as VARCHAR(MAX);
DECLARE @TableCursor as CURSOR;
SET @TableCursor = CURSOR FOR
SELECT sobjects.name
FROM sysobjects sobjects
WHERE sobjects.xtype = 'U'
AND name like 'HISTORY_MasterList_%'
ORDER BY sobjects.name
OPEN @TableCursor;
FETCH NEXT FROM @TableCursor INTO @TableName;
WHILE @@FETCH_STATUS = 0
BEGIN
SET @SQL ='select '''+ @TableName +''', 0
Union All
select All ''Server Count'',count(1) from ['+ @TableName +']
Union All
select All ''Server Cores'',sum(convert(decimal(18,0),cores)) …
Run Code Online (Sandbox Code Playgroud) sql-server-2008 sql-server t-sql sql-server-2008-r2 sql-server-2012
sql-server ×5
select ×3
postgresql ×2
cursors ×1
date ×1
distinct ×1
firebird ×1
index ×1
join ×1
oracle ×1
partitioning ×1
permissions ×1
query ×1
sqlite ×1
storage ×1
t-sql ×1