小编The*_*ler的帖子

SQL - 有VS在哪里

我有以下两个表:

1. Lecturers (LectID, Fname, Lname, degree).
2. Lecturers_Specialization (LectID, Expertise).
Run Code Online (Sandbox Code Playgroud)

我想找到专业化程度最高的讲师.当我尝试这个时,它不起作用:

SELECT
  L.LectID, 
  Fname, 
  Lname 
FROM Lecturers L, 
     Lecturers_Specialization S
WHERE L.LectID = S.LectID
AND COUNT(S.Expertise) >= ALL (SELECT
  COUNT(Expertise)
FROM Lecturers_Specialization
GROUP BY LectID);
Run Code Online (Sandbox Code Playgroud)

但是当我尝试这个时,它有效:

SELECT
  L.LectID,
  Fname,
  Lname 
FROM Lecturers L,
     Lecturers_Specialization S
WHERE L.LectID = S.LectID
GROUP BY L.LectID,
         Fname,
         Lname 
HAVING COUNT(S.Expertise) >= ALL (SELECT
  COUNT(Expertise)
FROM Lecturers_Specialization
GROUP BY LectID); 
Run Code Online (Sandbox Code Playgroud)

是什么原因?谢谢.

sql where having

184
推荐指数
6
解决办法
16万
查看次数

有没有办法在 Redshift 中的表之间复制或克隆授权?

由于 Redshift 的仅追加性质,我们经常需要合并表以删除重复记录并显示记录的最新版本。为了准备此过程,需要重命名基表并创建其副本。将执行脚本来扫描插入表并将最新的唯一记录移动到新的基表中。但是,如果该表在此过程开始之前已经运行了一段时间,则表上可能存在在创建克隆时未复制的授权。

我们通常没有原始表 DDL,尽管我们可以通过https://github.com/awslabs/amazon-redshift-utils/blob/master/src/AdminViews/v_generate_tbl_ddl.sql获取它,但这不会生成具有任何授权的表定义。

有没有办法复制带有就地拨款的表,或者生成脚本来根据旧表创建拨款?

已尝试使用https://github.com/awslabs/amazon-redshift-utils/blob/master/src/AdminViews/v_generate_tbl_ddl.sql但这不会生成任何授予语句,只会生成 set Owner 语句。

也进行了研究has_table_privilege,但这似乎不是最简单的行动方案。

sql amazon-redshift sql-grant

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

Postgresql加入限制

我正在创建SQL查询,涉及多个具有1到N关系的表以支持分页.

为了得到前10位父母,我试着去做

SELECT * from parent p
LEFT JOIN child c
ON c.parent_id = p.id
LIMIT 10
Run Code Online (Sandbox Code Playgroud)

如果任何父级有多个子级,则此方法无效

我能做的一个选择是

__CODE__

这非常笨拙.我想做的是

SELECT * from parent LIMIT 10 into temp_p;
SELECT * from temp_p p
LEFT JOIN child c
ON c.parent_id = p.id
Run Code Online (Sandbox Code Playgroud)

但当然语法错了.我想知道Postgresql是否有某种方式来支持我想做的事情.

postgresql

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

当使用多个远程 fdw 源进行插入时,Postgres BIGSERIAL 不共享序列

我正在尝试使用外部数据包装器将其他两个 Postgres 数据库插入到 Postgres 数据库中的表中。目标是拥有一个独立于源的自动生成主键,因为将有两个以上的主键。

\n

我首先像这样定义表:

\n

目标数据库:

\n
create table dummy (\n  dummy_pk bigserial primary key\n  -- other fields\n);\n
Run Code Online (Sandbox Code Playgroud)\n

来源数据库:

\n
create foreign table dummy (\n  dummy_pk bigserial\n  -- other fields\n) server ... ;\n
Run Code Online (Sandbox Code Playgroud)\n

只要我仅从一个源插入,此解决方案就可以正常工作,当我尝试从另一个源插入而不指定 dummy_pk 时,我收到以下消息:

\n
\n

重复密钥 (dummy_pk)=(1)

\n
\n

因为 postgres 尝试插入 id 1,所以我相信每个源外部表使用的序列是不同的。我对源表做了一些更改,试图让目标表的序列完成 id 的工作:

\n
create foreign table dummy (\n  dummy_pk bigint\n  -- other fields\n) server ... ;\n
Run Code Online (Sandbox Code Playgroud)\n

这次我遇到了不同的错误:

\n
\n

NULL 值违反列 \xc2\xab dummy_pk \xc2\xbb 上的 NOT NULL …

sql postgresql primary-key postgres-fdw

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