MySQL delete with nested select query

后端 未结 2 1662
情话喂你
情话喂你 2021-02-20 02:37

I have the following MySQL query:

DELETE FROM catalogue 
WHERE catalogue_id IN (
  SELECT catalogue_id 
  FROM catalogue 
  WHERE (
    product_id = (SELECT prod         


        
相关标签:
2条回答
  • 2021-02-20 02:39

    Or you can use temporary table:

      CREATE TEMPORARY TABLE t AS
      SELECT catalogue_id 
      FROM catalogue 
      WHERE (
        product_id = (SELECT product_id FROM catalogue WHERE catalogue_id = '2290') 
        AND length_id = (SELECT length_id FROM catalogue WHERE catalogue_id = '2290') 
        AND gauge_id = (SELECT gauge_id FROM catalogue WHERE catalogue_id = '2290')
      );
    
      DELETE FROM catalogue WHERE catalogue_id IN (SELECT catalogue_id FROM t);
    

    With your query you got You can't specify target table 'catalogue' for update in FROM clause because you can't make select and update on the same table in one query.

    0 讨论(0)
  • 2021-02-20 02:57

    Perform double nesting

    DELETE FROM catalogue 
    WHERE catalogue_id IN (SELECT catalogue_id FROM (
      SELECT catalogue_id 
      FROM catalogue 
      WHERE (
        product_id = (SELECT product_id FROM catalogue WHERE catalogue_id = '2290') 
        AND length_id = (SELECT length_id FROM catalogue WHERE catalogue_id = '2290') 
        AND gauge_id = (SELECT gauge_id FROM catalogue WHERE catalogue_id = '2290')
      )) x
    )
    

    It fools mysql

    0 讨论(0)
提交回复
热议问题