我正在嘗試在 postgresql 中將同一行的相同資料添加到我的表中 x 次。有沒有一種方法可以在不手動輸入相同值 x 次的情況下做到這一點?我正在為 postgres 尋找相當于 go[count] 的 sql ......如果存在的話。
uj5u.com熱心網友回復:
使用函式generate_series(),例如:
insert into my_table
select id, 'alfa', 'beta'
from generate_series(1,4) as id;
在db<>fiddle中測驗它。
uj5u.com熱心網友回復:
主意
生成給定大小的結果集并將其與要插入x時間的記錄交叉連接。仍然缺少的是正確 PK 值的生成。具體建議將需要有關資料模型的更多詳細資訊。
詢問
下面的示例查詢假定您的 PK 值是自動生成的。
CREATE TABLE test ( id SERIAL, a VARCHAR(10), b VARCHAR(10) );
INSERT INTO test (a, b)
WITH RECURSIVE Numbers(i) AS (
SELECT 1
UNION ALL
SELECT i 1
FROM Numbers
WHERE i < 5 -- This is the value `x`
)
SELECT adhoc.*
FROM Numbers n
CROSS JOIN ( -- This is the single record to be inserted multiple times
SELECT 'value_a' a
, 'value_b' b
) adhoc
;
在這個 db fiddle中查看它的實際效果。
注意/參考
該解決方案從這里采用,稍作修改(還有許多其他解決方案可以x使用 SQL 分層/遞回查詢生成連續數字,因此參考的選擇有些隨意)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/463925.html
標籤:PostgreSQL
