簡體   English   中英

通過從mysql中的另一個表中獲取數據來從表中刪除數據

[英]Delete data from a table by fetching data from another table in mysql

我已經嘗試了很多R&D,但是此查詢可以解釋我的問題。 我不知道我在做什么錯。

select color_code from color_master WHERE color_code like CONCAT('%','(select color_code from artist_upload_painting where painting_stock_status = 1)','%')

我想從主表中刪除其color_code在其artist_upload_painting表的painting_stock_status = 1的color_code字段中的行。

如下使用(子查詢)

delete from color_master WHERE color_code  in (select color_code from artist_upload_painting where painting_stock_status = 1);

我自己解決了問題。 這是解決方案。

$del_Query = mysql_query("select DISTINCT(color_code) from artist_upload_painting where upload_painting_id = '$itemid'");
    while($Get_Result = mysql_fetch_array($del_Query))
    {
    $master_color = explode(",",$GetResult['color_code']);
    $uniq_color = array_unique($master_color);
        foreach ( $uniq_color as $color)
        {
            mysql_query("delete from color_master where color_code = $color");

        }
    }

嘗試:

DELETE 
FROM master 
WHERE color_code IN ( SELECT DISTINCT color_code
                     FROM artist_upload_painting
                     WHERE painting_upload_status = 1)

加入應該更有效

DELETE FROM color_master 
JOIN artist_upload_painting
ON color_master.color_code = artist_upload_painting.color_code
AND artist_upload_painting.painting_stock_status = 1

如果您經常運行此查詢,則可以在color_codepainting_stock_status列的artist_upload_painting表中添加索引,以artist_upload_painting此過程。

$queryToFindMatching = mysql_query("SELECT * FROM artist_upload_painting WHERE painting_upload_status = '1'");

while ($resultOfMatching = mysql_fetch_assoc($queryToFindMatching)){

    mysql_query("DELETE FROM color_master WHERE color_code = '{$resultOfMatching['color_code']}'");

}

雖然,您實際上不應該使用mysql_ *函數。.也許考慮使用PDO或mysqli_ *模型並嘗試進入OOP。

嘗試這個:

DELETE
FROM color_master CM
WHERE CM.color_code IN (
    SELECT AUP.color_code
    FROM artist_upload_painting AUP
    WHERE AUP.painting_stock_status = 1);

@阿比瑪奴

我在phpMyAdmin中使用了此代碼。 設置@var =“ SELECT * FROM artist_upload_painting WHERE painting_stock_status ='1'”; SELECT * FROM color_master在哪里color_code喜歡@var; 但是此代碼返回一個空集。

請這樣做。 @var =“ SELECT * FROM artist_upload_painting WHERE painting_stock_status ='1'”而不是*使用與顏色代碼匹配的特定列名稱

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM