几个月前,我从Stack Overflow的答案中学到了如何使用以下语法在MySQL中一次执行多个更新:
INSERT INTO table (id, field, field2) VALUES (1, A, X), (2, B, Y), (3, C, Z)
ON DUPLICATE KEY UPDATE field=VALUES(Col1), field2=VALUES(Col2);
Run Code Online (Sandbox Code Playgroud)
我现在切换到PostgreSQL,显然这是不正确的.它指的是所有正确的表,所以我认为这是使用不同关键字的问题,但我不确定PostgreSQL文档中的哪个被覆盖.
为了澄清,我想插入几个东西,如果它们已经存在则更新它们.
我遇到了我的主键序列与我的表行不同步的问题.
也就是说,当我插入一个新行时,我得到一个重复的键错误,因为串行数据类型中隐含的序列返回一个已经存在的数字.
这似乎是由导入/恢复不能正确维护序列引起的.
我有一张桌子test(id,name)
.
我需要插入样值: user's log
,'my user'
,customer's
.
insert into test values (1,'user's log');
insert into test values (2,''my users'');
insert into test values (3,'customer's');
Run Code Online (Sandbox Code Playgroud)
如果我运行上述任何语句,我会收到错误.
如果有任何方法可以正确地做到这一点请分享.我不想要任何准备好的陈述.
是否可以使用sql转义机制?
我正在寻找一种方法来查找Postgres中所有表的行数.我知道我可以一次做一张桌子:
SELECT count(*) FROM table_name;
Run Code Online (Sandbox Code Playgroud)
但我希望看到所有表格的行数,然后按顺序排列,以了解我所有表格的大小.
如果我有一个日期01/01/2009,我想知道它是什么日子,例如周一,周二等...
SQL 2005/2008中是否有内置函数?或者我需要使用辅助表吗?
我正在尝试将基于MySQL的应用程序迁移到Microsoft SQL Server 2005(不是选择,而是生活).
在原始应用程序中,我们几乎完全使用符合ANSI-SQL的语句,但有一个重要的例外 - 我们group_concat
经常使用MySQL的函数.
group_concat
顺便说一下,这样做:给出一张表,比如说,员工姓名和项目......
SELECT empName, projID FROM project_members;
Run Code Online (Sandbox Code Playgroud)
收益:
ANDY | A100
ANDY | B391
ANDY | X010
TOM | A100
TOM | A510
Run Code Online (Sandbox Code Playgroud)
...这是你用group_concat得到的:
SELECT
empName, group_concat(projID SEPARATOR ' / ')
FROM
project_members
GROUP BY
empName;
Run Code Online (Sandbox Code Playgroud)
收益:
ANDY | A100 / B391 / X010
TOM | A100 / A510
Run Code Online (Sandbox Code Playgroud)
所以我想知道的是:是否有可能在SQL Server中编写用户定义的函数来模拟其功能group_concat
?
我几乎没有使用UDF,存储过程或类似的东西的经验,只是直接的SQL,所以请错误地说太多的解释:)
多年来GROUP BY
,我一直在使用所有类型的聚合查询.最近,我一直在反向设计一些PARTITION BY
用于执行聚合的代码.在阅读我能找到的所有文档时PARTITION BY
,听起来很像GROUP BY
,可能还添加了一些额外的功能?它们是相同通用功能的两个版本,还是它们完全不同?
我正在寻找一种通过查询连接组内字段的字符串的方法.例如,我有一张桌子:
ID COMPANY_ID EMPLOYEE
1 1 Anna
2 1 Bill
3 2 Carol
4 2 Dave
Run Code Online (Sandbox Code Playgroud)
我想通过company_id分组得到类似的东西:
COMPANY_ID EMPLOYEE
1 Anna, Bill
2 Carol, Dave
Run Code Online (Sandbox Code Playgroud)
mySQL中有一个内置函数来执行这个group_concat
是否有任何命令可以在Postgres中找到所有数据库大小?
我可以使用以下命令找到特定数据库的大小:
select pg_database_size('databaseName');
Run Code Online (Sandbox Code Playgroud) postgresql ×6
sql ×6
sql-server ×3
count ×1
datetime ×1
group-by ×1
insert ×1
oracle ×1
primary-key ×1
quotes ×1
sql-merge ×1
t-sql ×1
upsert ×1