從表格中消除 a 列中具有重複值的行
P粉366946380
P粉366946380 2024-03-31 10:42:26
0
1
274

有沒有辦法檢查lead_id是否在表中多次出現,如果是,則從查詢中排除?原因是我只想在 status_id = 1 並且沒有找到該 Lead_id 的其他 status_id/行時新增一行。

資料庫的設計方式是,每次狀態更新都會建立一個新行。因此,舊行具有較舊的時間戳記並保留在資料庫表中,這些將顯示在前端的狀態歷史記錄元件中。但既然是這樣設計的,我就不能簡單地說:給每個使用者一個狀態1,一個新的狀態更新。因為這樣它將為每個 Lead_id 添加一行,因為所有潛在客戶都將以 status_id 1 進入資料庫。

到目前為止我使用的查詢:

INSERT INTO `lead_has_status` (`lead_id`, `lead__status_id`, `comment`, `created_at`, `updated_at`)
SELECT (`lead_id`, 13, "", `created_at`, `updated_at`)
WHERE `lead__status_id` = 1 AND 

數據是什麼樣的:

lead_id status_id 更多數據
1 1 資料
1 12 資料
2 1 資料
2 14 資料
3 1 資料
4 1 資料
5 1 資料
6 1 資料

對於每個新的潛在客戶(表單提交),它將建立一行並為該潛在客戶提供 status_id 1(狀態:新)。我確實需要將 200 多個線索從 1 批次更新到另一個 status_id,但是透過我現在的查詢,它將更新包含 status_id 為 1 的每一行。我想要的是,它將首先檢查 Lead_id 是否僅存在在表中一次,如果為 true,則添加具有更新的 status_id 的新行。

因此,在 sql 查詢之後,它需要如下所示:

lead_id status_id 更多數據
1 1 資料
1 12 資料
2 1 資料
2 14 資料
3 1 資料
3 12 資料
4 1 資料
4 12 資料
5 1 資料
5 12 資料
6 1 資料
6 12 資料

TLDR:如果 Lead_id 在表中只找到一次,則新增帶有 status_id 的新行。

P粉366946380
P粉366946380

全部回覆(1)
P粉441076405

如果您的表格每行都有一個唯一的 ID,那麼您可以使用這樣的查詢

INSERT INTO `lead_has_status` (`lead_id`, `lead__status_id`, `comment`, `created_at`, `updated_at`)
SELECT (`lead_id`, 13, "", `created_at`, `updated_at`)
FROM `lead_has_status` l
WHERE `lead__status_id` = 1 AND NOT EXISTS ( 
  SELECT 1 FROM lead_has_status 
  WHERE `lead_id` = l.`lead_id` AND id  l.id );

並且沒有 ID

INSERT INTO `lead_has_status` (`lead_id`, `lead__status_id`, `comment`, `created_at`, `updated_at`)
SELECT (`lead_id`, 13, "", `created_at`, `updated_at`)
FROM `lead_has_status` l
WHERE `lead__status_id` = 1 AND  () 
  SELECT COUNT(*) FROM lead_has_status 
  WHERE `lead_id` = l.`lead_id`) = 1 ;
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!