简短的 php/mysql 查询,用于删除两个表选择的地方


short php/mysql query to delete where two table select

我需要你的帮助来加速我的 mysql 查询

我的 PHP 代码视图如下所示:

$product = query("SELECT `id`, `productname`, MAX(NO) FROM `product_list` WHERE 1");
$count1 = query("SELECT  `products` FROM `count1` WHERE 1");
list($noproduct) = mysql_fetch_array($count1);
if (mysql_num_rows($product) > $noproduct) {
    query("DELETE FROM `product_list` WHERE `NO` > ".$noproduct.");
}

MySQL 基础看起来像这样:

CREATE TABLE `count1` (
  `id` int(11) NOT NULL,
  `products` int(5) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO `count1` (`id`, `products`) VALUES
(1, 9);
CREATE TABLE `product_list` (
  `id` int(11) NOT NULL,
  `productname` varchar(55) NOT NULL,
  `NO` int(5) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO `product_list` (`id`, `productname`, `NO`) VALUES
(1, 'product1', 1),
(2, 'product2', 2),
(3, 'product3', 3),
(4, 'product4', 4),
(5, 'product5', 5),
(6, 'product6', 6),
(7, 'product7', 7),
(8, 'product8', 8),
(9, 'product9', 9),
(10, 'product10', 10),
(11, 'product11', 11);
ALTER TABLE `product_list`
  ADD PRIMARY KEY (`id`);
ALTER TABLE `count1`
  ADD PRIMARY KEY (`id`);

ALTER TABLE `count1`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

ALTER TABLE `product_list`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=12;

每次重新加载页面时,我的代码都会执行三个查询,我只需要进行一次查询。

我认为它应该看起来像:

Delete from product_list where (select product_list)  > (select count1)

我认为您正在寻找此查询:

DELETE FROM product_list 
WHERE NO > (SELECT  products FROM count1 LIMIT 1)

添加LIMIT 1只是一种安全措施,以防您在产品中有多个记录。

请注意,实际上没有必要先选择 MAX(NO) 。如果没有要删除的内容,运行 delete 语句并没有什么坏处。到时候它什么都不做。