我需要你的帮助,以加快我的MySQL查询短PHP/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)
你认为'count1'表有什么用处?我认为你对你的代码在做什么有严重的误解。 – mkasberg
在表中“count1”被给定了一个固定值,如果第二个表有更高的最大值(NO),则product_list中的行必须是删除类型的东西if(product_list.NO> count1.products){DELETE ROWS IN products_list } –
ofcourse produt_list.NO是表中的最大值,谢谢:) –