2016-03-13 50 views
1

我需要你的幫助,以加快我的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) 
+0

你認爲'count1'表有什麼用處?我認爲你對你的代碼在做什麼有嚴重的誤解。 – mkasberg

+0

在表中「count1」被給定了一個固定值,如果第二個表有更高的最大值(NO),則product_list中的行必須是刪除類型的東西if(product_list.NO> count1.products){DELETE ROWS IN products_list } –

+0

ofcourse produt_list.NO是表中的最大值,謝謝:) –

回答

0

我認爲你正在尋找此查詢:

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

添加的LIMIT 1只是一種安全措施,如果你將有產品以上記錄。

請注意,沒有真正的需要首先選擇MAX(NO)。如果沒有要刪除的內容,則運行刪除語句並不會造成傷害。那麼它什麼都不會做。

+0

這麼簡單,但不是我想的那個......非常感謝 –

+0

你能幫助我嗎?有可能做到這一點,但這次用INSERT?這是關於以類似的方式創建記錄? –

+0

當然,只要問一個新問題,並準確描述您需要的內容:您擁有的表格,您嘗試過的代碼以及期望的結果。如果你願意,當你發佈你的問題時,你可以在這裏留言,我會看看它。 – trincot

相關問題