Truy vấn thành công (nếu không thì mysql_query()
sẽ không trả về true
) nhưng nó không chèn bất kỳ hàng nào. Lời giải thích duy nhất cho điều đó là SELECT
một phần dẫn đến một tập hợp trống. Đó là vì LEFT JOIN
trả về các hàng tồn tại trong t1
nhưng không có trong t2
, nhưng lựa chọn được thực hiện trên NULL
các hàng trong t1
.
Điều này sẽ hoạt động:
INSERT teamshalf
(`yearID` , `lgID` , `teamID` , `Half` ,
`divID` , `DivWin` , `Rank` , `G` , `W` , `L`)
SELECT DISTINCT t1.`yearID` , t1.`lgID` , t1.`teamID` ,
t1.`Half` , t1.`divID` , t1.`DivWin` , t1.`Rank` , t1.`G` , t1.`W` , t1.`L`
FROM `teamshalf_TEMP` t1 LEFT JOIN `teamshalf` t2 ON t1.`yearID` = t2.`yearID`
AND t1.`lgID` = t2.`lgID` AND t1.`teamID` = t2.`teamID`
AND t1.`Half` = t2.`Half` AND t1.`divID` = t2.`divID`
AND t1.`DivWin` = t2.`DivWin` AND t1.`Rank` = t2.`Rank`
AND t1.`G` = t2.`G` AND t1.`W` = t2.`W` AND t1.`L` = t2.`L`
WHERE t2.`yearID` IS NULL
Cũng lưu ý rằng mysql_query()
không được dùng nữa. Và bạn nên khai báo các cột phải chứa dữ liệu là NOT NULL
, vì vậy NULL
sẽ không được chấp nhận. Và truy vấn của bạn sẽ chậm vì bạn không sử dụng chỉ mục.