在批評之前閱讀圖片下方的部分,謝謝。我想計算 ID_Campionato 垂直列中有多少個欄位。總共有13個,所以我想得到13的結果。該表名為ARCHIVIO_Squadre_Campionato,而列ID_Campionato。我知道記錄和列是一樣的,但是我需要它們進行測驗,因為列的欄位是稍后單獨添加的。如果它們不對齊,某些欄位將具有 NULL。所以我想計算列的欄位,從計數中排除任何 NULL,以檢查是否有問題。

重要的 我知道,現在你可以告訴我,我可以簡單地計算記錄的行數,但我回答說,垂直列 ID_Campionato 中的資料是稍后插入的,與其他所有內容分開插入。因此可能會出現錯誤,因為通過稍后單獨插入它們,它們可能與前面已經存在的記錄數不同。如果它們不對齊,某些欄位將具有 NULL。所以我想計算列的欄位,從計數中排除任何 NULL,以檢查是否有問題。這就是我想檢查的原因:我需要它進行某種測驗。列 ID_Campionato 我稍后添加它,在我已經創建了記錄之后。我單獨添加它,因為它是從另一個表復制的列。所以我問這個問題是因為我想做一個測驗,
更新幫助
con = sqlite3.connect('database.db')
cursor = con.cursor()
#Inserts all the Serie A teams all over again
sqlite_insert_query_SerieA = 'INSERT INTO ARCHIVIO_Squadre_Campionato (Nome_Squadra) VALUES (?);'
cursor.executemany(sqlite_insert_query_SerieA, Values_SerieA)
count_squadre_SerieA = cursor.rowcount
con.commit()
#Copy and insert, in the Teams table, the ID of the relative championship
cursor.executescript("""
UPDATE ARCHIVIO_Squadre_Campionato
SET ID_Campionato= (
SELECT ID_Campionato
FROM ARCHIVIO_Campionati
WHERE Nome_Campionato = 'Serie A')
WHERE ID_Campionato IS NULL;
""")
uj5u.com熱心網友回復:
考慮以下交換,在 SQLite3 中完成。這是你追求的嗎?
DROP TABLE one;
DROP TABLE two;
.mode box
CREATE TABLE one (
ID_Sq integer not null primary key,
Nome_Squadra char(255),
ID_Campionato integer
);
CREATE TABLE two (
ID_Sq integer not null primary key,
ID_Campionato integer
);
INSERT INTO one (ID_Sq, Nome_Squadra) VALUES
(2865, 'Bologna'),
(2866, 'Torino'),
(2867, 'Udinese'),
(2868, 'Sampdoria'),
(2869, 'Venizia'),
(2870, 'Spezia'),
(2871, 'Genoa'),
(2872, 'Salernitana'),
(2873, 'Califari'),
(2874, 'Pisa'),
(2875, 'Benevento'),
(2876, 'Reggina'),
(2877, 'Brescia');
INSERT INTO two (ID_Sq, ID_Campionato) VALUES
(2865, 1),
(2866, 1),
(2867, 1),
(2868, 1),
(2869, 1),
(2870, 1),
(2873, 1),
(2874, 2),
(2875, 2),
(2876, 2),
(2877, 2);
SELECT * FROM one;
┌───────┬──────────────┬───────────────┐
│ ID_Sq │ Nome_Squadra │ ID_Campionato │
├───────┼──────────────┼───────────────┤
│ 2865 │ Bologna │ │
│ 2866 │ Torino │ │
│ 2867 │ Udinese │ │
│ 2868 │ Sampdoria │ │
│ 2869 │ Venizia │ │
│ 2870 │ Spezia │ │
│ 2871 │ Genoa │ │
│ 2872 │ Salernitana │ │
│ 2873 │ Califari │ │
│ 2874 │ Pisa │ │
│ 2875 │ Benevento │ │
│ 2876 │ Reggina │ │
│ 2877 │ Brescia │ │
└───────┴──────────────┴───────────────┘
SELECT * FROM two;
┌───────┬───────────────┐
│ ID_Sq │ ID_Campionato │
├───────┼───────────────┤
│ 2865 │ 1 │
│ 2866 │ 1 │
│ 2867 │ 1 │
│ 2868 │ 1 │
│ 2869 │ 1 │
│ 2870 │ 1 │
│ 2873 │ 1 │
│ 2874 │ 2 │
│ 2875 │ 2 │
│ 2876 │ 2 │
│ 2877 │ 2 │
└───────┴───────────────┘
UPDATE one SET ID_Campionato=two.ID_Campionato FROM two WHERE one.ID_Sq=two.ID_Sq;
SELECT * FROM one;
┌───────┬──────────────┬───────────────┐
│ ID_Sq │ Nome_Squadra │ ID_Campionato │
├───────┼──────────────┼───────────────┤
│ 2865 │ Bologna │ 1 │
│ 2866 │ Torino │ 1 │
│ 2867 │ Udinese │ 1 │
│ 2868 │ Sampdoria │ 1 │
│ 2869 │ Venizia │ 1 │
│ 2870 │ Spezia │ 1 │
│ 2871 │ Genoa │ │
│ 2872 │ Salernitana │ │
│ 2873 │ Califari │ 1 │
│ 2874 │ Pisa │ 2 │
│ 2875 │ Benevento │ 2 │
│ 2876 │ Reggina │ 2 │
│ 2877 │ Brescia │ 2 │
└───────┴──────────────┴───────────────┘
SELECT COUNT(*) FROM one WHERE ID_Campionato IS NOT NULL;
┌──────────┐
│ COUNT(*) │
├──────────┤
│ 11 │
└──────────┘
sqlite>
當然,這變成了:
cursor.execute("SELECT COUNT(*) FROM one WHERE ID_Campionato IS NOT NULL;")
print(cursor.fetchOne()[0])
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/345395.html
上一篇:SQLAlchemy給出TypeError從SQLite資料庫讀取字串
下一篇:Maven沒有運行JUnit測驗
