简短的php / mysql查询删除两个表选择的位置

时间:2016-03-13 21:35:22

标签: php mysql

我需要你的帮助才能加快我的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 base看起来像这样:

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)

1 个答案:

答案 0 :(得分:0)

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

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

如果您在产品中有多条记录,则添加LIMIT 1只是一种安全措施。

请注意,没有必要先选择MAX(NO)。如果没有要删除的内容,则运行delete语句没有坏处。它只会做什么。