2016-10-26 12 views
5

Tôi đang cố cập nhật một hàng và đặt lô hàng là max()+1. Lý do cho điều này là bảng đã có một số auto_increment trên một cột khác có tên là id. Từ truy vấn đầu tiên tôi nhận được max(shipment_number) và trong truy vấn tiếp theo, iam tăng thêm với +1. Nhưng iam nhận được một lỗi ..cập nhật và đặt giá trị với tối đa() + 1 vấn đề

# 1093 - Bạn không thể xác định mục tiêu bảng 'commercial_sales_custpo_process' để cập nhật trong mệnh đề FROM

Bất cứ ai xin giúp tôi với truy vấn này.

$max = "SELECT MAX(shipment_number) FROM commercial_sales_custpo_process WHERE 
tender_id='$tender_id' AND id='$id'"; 

$query1="UPDATE commercial_sales_custpo_process set shipment_number = ($max+1) WHERE 
tender_id='$tender_id' AND id='$id'"; 
mysql_query($query1) or die ("Error in query: $query1"); 
+0

cố gắng để incre trước khi bước vào truy vấn. '$ var = $ max + 1;' và gán biến này '$ var' để cập nhật truy vấn. cũng khuyên bạn nên bắt đầu với 'mysqli' http://php.net/manual/en/book.mysqli.php – Karthi

+0

tại sao không AUTO_INCREMENT – e4c5

+0

Nếu đã có một auto_increment tại sao bạn cần điều này? Nó có thể được tính toán khi dữ liệu được chọn mà không phải đối phó với các vấn đề phát sinh khi 2 phiên chạy đồng thời. –

Trả lời

2

Nếu Auto_Increment không có sẵn, chỉ cần sử dụng UPDATE..JOIN:

UPDATE commercial_sales_custpo_process t 
CROSS JOIN (SELECT MAX(shimpent_number) + 1 as max_ship 
      FROM commercial_sales_custpo_process) s 
SET t.shipment_number = s.max_ship 
WHERE t.tender_id='$tender_id' AND t.id='$id' 
+0

Cảm ơn bạn, làm việc tốt :) –

+0

Không có vấn đề mate @SanjuMenon – sagi

Các vấn đề liên quan