我的 postgres 数据库有一个名为“id”的列,其范围从 40,000,000 到大约 50,000,000。“id”列是主键。我需要更改“id”列值,使它们跨越不同的数字,以便将此数据库与另一个数据库合并。
我如何生成代码以将值从 40,000,000 - 50,000,000 更改为 0 - 10,000,000?
表的定义是
CREATE TABLE public.keyvaluehistory (
id bigint NOT NULL
DEFAULT nextval('keyvaluehistory_id_seq'::regclass),
segkey text NOT NULL,
dvalue double precision,
bvalue bytea,
tstamp timestamp with time zone,
CONSTRAINT keyvaluehistory_pkey PRIMARY KEY (id)
);
Run Code Online (Sandbox Code Playgroud)
表上没有外键。
我可以承受几分钟/几小时的停机时间。
我有一个具有以下结构的表,它是数据:
create table test_table
(
Item_index int,
Item_name varchar(50)
)
insert into test_table (Item_index,Item_name) values (0,'A')
insert into test_table (Item_index,Item_name) values (1,'B')
insert into test_table (Item_index,Item_name) values (0,'C')
insert into test_table (Item_index,Item_name) values (1,'D')
insert into test_table (Item_index,Item_name) values (0,'E')
Run Code Online (Sandbox Code Playgroud)
我想知道为什么更改order by查询部分中的列会更改结果?在QUERY-1, I useditem_index和QUERY-2I useditem_name列中按部分顺序排列。我认为这两个查询必须生成相同的结果because I used item_index in both queries for partitioning!我现在完全困惑了!为什么按列排序会影响最终结果?
查询-1:
select t.*,
max(t.Item_name)over(partition by t.item_index order by item_index) new_column
from test_table t;
Run Code Online (Sandbox Code Playgroud)
结果:
Item_index …Run Code Online (Sandbox Code Playgroud) 我正在运行查询存储以使数据库性能更好。到目前为止,它一直工作正常。当我尝试加载最后一天的热门持续时间时,我花了 26 分钟来加载屏幕。
我运行的 SQL 版本是: Microsoft SQL Server 2017 (RTM-CU27) (KB5006944) - 14.0.3421.10 (X64) Oct 14 2021 00:47:52 版权所有 (C) 2017 Microsoft Corporation Standard Edition (64-bit) on Windows Server 2019 Datacenter 10.0(内部版本 17763:)(虚拟机管理程序)
QS 中弹出查询:
/*
This query text was retrieved from showplan XML, and may be truncated.
*/
SELECT TOP (@results_row_count)
p.query_id query_id,
q.object_id object_id,
ISNULL(OBJECT_NAME(q.object_id),'') object_name,
qt.query_sql_text query_sql_text,
ROUND(CONVERT(float, SUM(rs.avg_duration*rs.count_executions))*0.001,2) total_duration,
SUM(rs.count_executions) count_executions,
COUNT(distinct p.plan_id) num_plans
FROM sys.query_store_runtime_stats rs
JOIN sys.query_store_plan p ON p.plan_id = rs.plan_id
JOIN …Run Code Online (Sandbox Code Playgroud) 我试图弄清楚如何从数据集中检索最小/最大值和最小/最大日期,以及与每个最小/最大值对应的日期值。
示例数据
CREATE TABLE mytable
([ID] int, [TEMP] FLOAT, [DATE] DATE)
;
INSERT INTO mytable
([ID], [TEMP], [DATE])
VALUES
(8305, 16.38320208, '03/22/2002'),
(8305, 17.78320208, '11/15/2010'),
(8305, 16.06320208, '03/11/2002'),
(8305, 18.06320208, '02/01/2007'),
(2034, 5.2, '03/12/1985'),
(2034, 2.24, '05/31/1991'),
(2034, 6.91, '09/15/1981'),
(2034, 7.98, '07/16/1980'),
(2034, 10.03, '03/21/1979'),
(2034, 6.85, '11/19/1982')
;
Run Code Online (Sandbox Code Playgroud)
查询TEMP和DATE列的最小值/最大值:
SELECT ID,
COUNT(TEMP) AS COUNT,
MAX(TEMP) AS MAXTEMP,
MAX(DATE) AS MAXDATE
FROM mytable
GROUP BY ID;
Run Code Online (Sandbox Code Playgroud)
检索这个:
| ID | COUNT | MAXTEMP …Run Code Online (Sandbox Code Playgroud) 给定表
| 序列号 | 序列状态 |
|---|---|
| 1 | A |
| 1 | 乙 |
| 2 | A |
| 2 | A |
| 3 | A |
| 4 | 乙 |
| 5 | C |
我想选择不同的 seq_id,其中 seq_status 为 A(2 和 3),并且如果其中一个值不同则不返回
到目前为止我有一些看起来像这样的东西
SELECT distinct(s.seq_id) FROM sequence s
having s.seq_id IN (
select z.seq_id
from sequence z
group by z.seq_id, z.seq_status
having z.seq_status = "A" )
Run Code Online (Sandbox Code Playgroud)
但这会返回带有 seq_status A 的任何 seq_id,并且我只查找 seq_id,其中 seq_status 全部与所需值匹配
我是一名数据库学生,我执行了以下查询来同时学习一些内容(LEFT/RIGHT JOIN、UNION、WHERE + RegEx)。令我困扰的是执行顺序。我有两个表,如下所示:
create table practicaleft(
id smallint primary key,
nombre varchar,
cumple date
);
create table practicaright(
id smallint primary key,
apellido varchar,
cumpleanios date
);
Run Code Online (Sandbox Code Playgroud)
然后,我插入一些随机数据:
INSERT INTO practicaleft VALUES
(1, 'John', CURRENT_DATE - 1),
(5, 'Alice', CURRENT_DATE - 5),
(3, 'Bob', CURRENT_DATE - 3),
(7, 'Eva', CURRENT_DATE - 7);
INSERT INTO practicaright VALUES
(5, 'Doe', CURRENT_DATE - 5),
(6, 'Smith', CURRENT_DATE - 6),
(3, 'Johnson', CURRENT_DATE - 3),
(4, 'Brown', CURRENT_DATE - 4);
Run Code Online (Sandbox Code Playgroud)
之后,我执行此查询:
select id, …Run Code Online (Sandbox Code Playgroud) 当我第一次运行查询时,执行需要 x 毫秒。当我第二次运行它时,它花费的时间要少得多。我假设这个机制涉及一些缓存,但我需要知道我的查询的真实速度是多少。
顺便说一句,我在 Windows (XAMPP) 中使用 Apache、MySQL 和 PHP。
为什么我的查询是不确定的?
我有执行以下操作的查询:
select sum(float1*float2*coalesce(float3,1)) from table
Run Code Online (Sandbox Code Playgroud)
当我运行这个查询时,我得到了一个确定性的结果,但是当查询运行很多次时,情况似乎并非如此。
结果中的最后一个整数因不同的运行而异。
所有列都是 (float,null)
所有运行的浮动截断都应该相同吗?
我有一个 WordPress 表wp_posts,我想运行一个 UPDATE 将我的旧域中的 url 替换为我的新域。
例如,假设该字段post_content中的一条记录具有以下内容:
This is my <a href="http://www.my-old-site.com/link/to/some/page">old web</a> site.
<img src="http://www.my-old-site.com/wp-content/upload/2012/02/my-image-file.jps />
Run Code Online (Sandbox Code Playgroud)
我希望它变成:
This is my <a href="http://www.my-new-site.com/link/to/some/page">old web</a> site.
<img src="http://www.my-new-site.com/wp-content/upload/2012/02/my-image-file.jps />
Run Code Online (Sandbox Code Playgroud)
我试过以下查询
UPDATE wp_posts AS w`
SET w.post_content = REPLACE(w.post_content, 'my-old-site.com', 'my-new-site.com');
Run Code Online (Sandbox Code Playgroud)
但我没有得到任何结果。
知道如何修复它吗?
考虑一个表
CREATE TABLE test
(
id int(11) unsigned NOT NULL AUTO_INCREMENT,
external_id int(11),
number smallint(5),
value varchar(255),
UNIQUE INDEX (external_id, number),
PRIMARY KEY(id)
) ENGINE=InnoDB
Run Code Online (Sandbox Code Playgroud)
将 number 的值更新为
UPDATE test SET number=number + 1 WHERE external_id='X'
Run Code Online (Sandbox Code Playgroud)
或者
UPDATE test SET number='Y' WHERE external_id='X'
Run Code Online (Sandbox Code Playgroud)
由于 external_id-number 对是唯一的,如果 number 的新值存在,则不会更新。
如何根据 UNIQUE 约束使用类似INSERT ... ON DUPLICATE KEY增加numberby的值number + 1以达到可用值并完成UPDATE任务?
query ×10
mysql ×3
sql-server ×3
postgresql ×2
aggregate ×1
duplication ×1
innodb ×1
max ×1
mysql-5 ×1
performance ×1
php ×1
primary-key ×1
query-store ×1
select ×1
t-sql ×1
testing ×1
windows ×1