Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何删除mysql中计数大于1的货币?_Php_Mysql - Fatal编程技术网

Php 如何删除mysql中计数大于1的货币?

Php 如何删除mysql中计数大于1的货币?,php,mysql,Php,Mysql,我有一张叫做currency_country的桌子,里面有所有的货币。一些欧洲国家也有旧货币。我想从拥有欧元货币的国家删除所有非欧元货币 我试过这些方法,但没用 DELETE FROM `currency_country` WHERE currency_code NOT IN ( SELECT currency_code FROM ( SELECT currency_code FROM `currency_country` WHERE currency_code

我有一张叫做currency_country的桌子,里面有所有的货币。一些欧洲国家也有旧货币。我想从拥有欧元货币的国家删除所有非欧元货币

我试过这些方法,但没用

DELETE FROM `currency_country`
WHERE currency_code NOT IN (
  SELECT currency_code
  FROM (
    SELECT currency_code
    FROM `currency_country`
    WHERE currency_code = 'EUR'
  ) temp
);
还有这个

DELETE
FROM
   `currency_country` 
   LEFT JOIN
      country 
      on `currency_country`.`country_id` = country.`id` 
WHERE
   EXISTS 
   (
      SELECT
         * 
      FROM
         `currency_country` 
      WHERE
         EXISTS 
         (
            SELECT
               * 
            FROM
               `currency_country` 
            WHERE
               `currency_code` = 'EUR' 
         )
   )
   AND currency_code != 'EUR' 
   AND country.name IN 
   (
      'Austria',
      'Belgium',
      'Cyprus',
      'Netherlands',
      'Estonia',
      'Finland',
      'France',
      'Germany',
      'Greece',
      'Ireland',
      'Italy',
      'Latvia',
      'Lithuania',
      'Luxembourg',
      'Malta',
      'Monaco',
      'Portugal',
      'San Marino',
      'Slovakia',
      'Slovenia',
      'Spain'
   )
;

你有没有试过这样的方法:

DELETE FROM c1 
USING currency_country AS c1
WHERE c1.currency_code != 'EUR' 
AND EXISTS (
    SELECT 1 
    FROM (SELECT * FROM currency_country) AS c2 
    WHERE c2.currency_code = 'EUR' 
    AND c1.country_id = c2.country_id
);

不言自明,您可以删除所有非“欧元”的货币,以及同一国家/地区存在“欧元”的货币。

另一种方法。查找所有欧元的国家ID,然后删除所有非欧元货币

DELETE FROM currency_country
WHERE country_id IN (
    SELECT country_id
    FROM currency_country
    WHERE currency_code = 'EUR')
AND currency_code <> 'EUR';
编辑

请试试这个

DELETE FROM currency_country
WHERE country_id IN (
    SELECT country_id
    FROM (SELECT * FROM currency_country) AS something
    WHERE currency_code = 'EUR')
AND currency_code <> 'EUR';

第一个Where条件应为Where c1.CURRENCE_code!='EUR’,我猜是的,拼写错误对于这一个我得到了这个错误,你的SQL语法中有一个错误;查看与您的MySQL服务器版本对应的手册,了解在“c1 WHERE c1.currency_code!=”附近使用的正确语法EUR'和EXISTS从第1I行的“curren”中选择1,请尝试此版本。我之前发布的那篇文章使用了PostGreSQL语法,我的坏消息这次我得到了这个错误我不知道为什么会发生?您不能指定从第条中更新的目标表“c1”从货币\u国家/地区删除国家/地区从货币\u国家/地区中选择国家/地区从货币\u国家/地区选择国家/地区从货币\u代码=“EUR”和货币\u代码“EUR”它说您不能指定从第条中更新的目标表“货币\u国家/地区”您的\u db\u name.currency\u country.现在在为您工作吗?