首頁  >  問答  >  主體

從表格中消除 a 列中具有重複值的行

有沒有辦法檢查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粉366946380P粉366946380183 天前283

全部回覆(1)我來回復

  • P粉441076405

    P粉4410764052024-04-01 09:38:34

    如果您的表格每行都有一個唯一的 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 ;

    回覆
    0
  • 取消回覆