mysql中2个非常有用的查询
时间:2009-08-12 来源:haohaotmac
mysql中2个非常有用的查询
第一个:
INSERT ... SELECT Syntax
用处:数据转换(特别是数据量大的时候),我测试过。转换100万数据也只是用秒计划就OK了。
INSERT [LOW_PRIORITY] [IGNORE] [INTO] tbl_name [(column list)]
SELECT ...
With INSERT ... SELECT, you can quickly insert many rows into a table from one or many tables.
For example:
INSERT INTO tblTemp2 (fldID)
SELECT tblTemp1.fldOrder_ID FROM tblTemp1
WHERE tblTemp1.fldOrder_ID > 100;
The following conditions hold for an INSERT ... SELECT statement:
Prior to MySQL 4.0.1, INSERT ... SELECT implicitly operates in IGNORE mode. As of MySQL 4.0.1, specify IGNORE explicitly to ignore records that would cause duplicate-key violations.
Do not use DELAYED with INSERT ... SELECT.
Prior to MySQL 4.0.14, the target table of the INSERT statement cannot appear in the FROM clause of the SELECT part of the query. This limitation is lifted in 4.0.14.
AUTO_INCREMENT columns work as usual.
To ensure that the binary log can be used to re-create the original tables, MySQL will not allow concurrent inserts during INSERT ... SELECT.
You can use REPLACE instead of INSERT to overwrite old rows. REPLACE is the counterpart to INSERT IGNORE in the treatment of new rows that contain unique key values that duplicate old rows: The new rows are used to replace the old rows rather than being discarded.
2.in的用法。这个好处很多。特别是删除数据的时候可以不用whil循环就行了
比如语句:
$SQL = sprintf("DELETE FROM ".PRODUCTOPTION_TABLE." WHERE (productOptionID IN ('%s'))",join("','", $_POST['fieldsID']));
$DB->query($SQL);
就直接把一个产品列表中数据全删除了
INSERT ... SELECT Syntax
用处:数据转换(特别是数据量大的时候),我测试过。转换100万数据也只是用秒计划就OK了。
INSERT [LOW_PRIORITY] [IGNORE] [INTO] tbl_name [(column list)]
SELECT ...
With INSERT ... SELECT, you can quickly insert many rows into a table from one or many tables.
For example:
INSERT INTO tblTemp2 (fldID)
SELECT tblTemp1.fldOrder_ID FROM tblTemp1
WHERE tblTemp1.fldOrder_ID > 100;
The following conditions hold for an INSERT ... SELECT statement:
Prior to MySQL 4.0.1, INSERT ... SELECT implicitly operates in IGNORE mode. As of MySQL 4.0.1, specify IGNORE explicitly to ignore records that would cause duplicate-key violations.
Do not use DELAYED with INSERT ... SELECT.
Prior to MySQL 4.0.14, the target table of the INSERT statement cannot appear in the FROM clause of the SELECT part of the query. This limitation is lifted in 4.0.14.
AUTO_INCREMENT columns work as usual.
To ensure that the binary log can be used to re-create the original tables, MySQL will not allow concurrent inserts during INSERT ... SELECT.
You can use REPLACE instead of INSERT to overwrite old rows. REPLACE is the counterpart to INSERT IGNORE in the treatment of new rows that contain unique key values that duplicate old rows: The new rows are used to replace the old rows rather than being discarded.
2.in的用法。这个好处很多。特别是删除数据的时候可以不用whil循环就行了
比如语句:
$SQL = sprintf("DELETE FROM ".PRODUCTOPTION_TABLE." WHERE (productOptionID IN ('%s'))",join("','", $_POST['fieldsID']));
$DB->query($SQL);
就直接把一个产品列表中数据全删除了
相关阅读 更多 +