我需要在我的資料集(duplicate_name)中創建一個新列,如果某人有多個記錄,則該列包含 TRUE,否則為 FALSE。我找到了這段代碼(我正在使用 sqlite): SELECT *, CASE WHEN ROW NUMBER() OVER (PARTITION BY first_name, last_name) > 1) THEN 'TRUE' ELSE 'FALSE' END AS duplicate_name FROM users;
但是當我運行它時,它給了我這樣的資訊(只有第二條記錄被標記為真實): Carlo Thomas 男性 FALSE Carlo Thomas 男性 TRUE Don Scallion 男性 FALSE Tania Lopes 女性 FALSE
我需要的是這樣的表(同名的兩條記錄都標記為 TRUE): Carlo Thomas 男性 TRUE Carlo Thomas 男性 TRUE Don Scallion 男性 FALSE Tania Lopes 女性 FALSE
有人能幫助我嗎。
謝謝
uj5u.com熱心網友回復:
而不是ROW_NUMBER()使用COUNT(*)視窗功能:
SELECT *,
CASE WHEN COUNT(*) OVER (PARTITION BY first_name, last_name) > 1 THEN 'TRUE' ELSE 'FALSE' END AS duplicate_name
FROM users;
或更簡單,1 代表真,0 代表假:
SELECT *,
COUNT(*) OVER (PARTITION BY first_name, last_name) > 1 AS duplicate_name
FROM users;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/476322.html
