一些SQL操作语句(3)
返回
price1和price2不对应
mysql> select * from a001284 where id = 2\G
*************************** 1. row ***************************
id: 2
name: 'RUBBER HOSE''
code: WP35-50x3600L,5KF
dwg_id: 1
Nuid: 1
weight: 1
price1: 60280=100=1=2008-10-17=8102302=268=1854==60280=100=1=2008-10-17=8101302=
268=1689
price2: 78364=130=1=2008-10-17=13==78364=130=1=2008-10-17=13==78364=130=1=2008-1
0-17=13==78364=130=1=2008-10-17=13
memo: NULL
1 row in set (0.00 sec)
discount或是'D',或是与partsid数量对应的数据。否则置'D'。
mysql> update enq2 set discount = 'D' where id = 1196;
按时间的倒序排列
mysql> select id,time from enq2 order by time desc;
取出enq2的所有type1id不等于'B'同时price等于'P'的项目。
mysql> select * from enq2 where price = 'P' and type1id != 'B'\G
取出enq2的所有price不等于'P'的项目
mysql> select id,enq1id from enq2 where price != 'P';
从enq1取出id=1371时的ourref编号
mysql> select id,ourref from eqn1 where id = 1371;
取出enq2的所有price不等于'P'同时discount等于'D'的项目
mysql> select id,enq1id from enq2 where price != 'P' and discount = 'D';
mysql> select id,type1id from enq2 where type1id like "%138%";
+------+------------------+
| id | type1id |
+------+------------------+
| 1164 | 1138 |
| 1271 | 1138 |
| 1686 | 1380==1381==1382 |
+------+------------------+
3 rows in set (0.00 sec)
以上三个结果都不符合条件,想找的是恰好"138"
mysql> select id,type1id from enq2 where type1id like "138";
Empty set (0.02 sec)
这个可以,但是可能会漏掉"==138","138==","==138=="等三种情况
mysql> select id,type1id from enq2 where type1id like "707" or type1id like "%==707" or type1id like "%==707==%" or type1id like "707==%";
+------+---------------------------------+
| id | type1id |
+------+---------------------------------+
| 459 | 704==705==557==706==707 |
| 1606 | 1346==707==1347==703==1348==468 |
+------+---------------------------------+
2 rows in set (0.00 sec)
这个排比语句行。把各种情况列出来,唯一一个;复数个的最后一个;复数个的中间一个;复数个的第一个。
mysql> select id,type1id from enq2 where type1id like "138" or type1id like "%==138" or type1id like "%==138==%" or type1id like "138==%";
Empty set (0.00 sec)
1138没有被错误抽出!
抽出price不是'P'的项目
mysql> select id,price,discount from enq2 where price <> 'P'\G
抽出price不是'P'和discount不是'D'的项目
mysql> select id,price,discount from enq2 where price <> 'P' and discount <> 'D'
\G
mysql> select enq1.id from enq1,hull_no where hull_no.name like "%DRAGON%" and hull_no.id = enq1.hullnoid;
mysql> select enq1.id,enq1.ourref,hull_no.name from enq1,hull_no where hull_no.n ame like "%DRAGON%" and enq1.hullnoid = hull_no.id;
+------+---------+--------------+
| id | ourref | name |
+------+---------+--------------+
| 765 | 8073010 | OCEAN DRAGON |
| 766 | 8073011 | OCEAN DRAGON |
| 767 | 8073012 | OCEAN DRAGON |
| 774 | 8073107 | OCEAN DRAGON |
| 819 | 8080510 | OCEAN DRAGON |
| 1042 | 8082505 | OCEAN DRAGON |
| 1218 | 8090801 | OCEAN DRAGON |
| 1219 | 8090802 | OCEAN DRAGON |
| 1220 | 8090803 | OCEAN DRAGON |
| 1221 | 8090804 | OCEAN DRAGON |
| 1222 | 8090805 | OCEAN DRAGON |
| 1223 | 8090806 | OCEAN DRAGON |
| 1224 | 8090807 | OCEAN DRAGON |
| 1225 | 8090808 | OCEAN DRAGON |
| 1269 | 8091109 | OCEAN DRAGON |
| 1423 | 8093011 | OCEAN DRAGON |
| 1455 | 8100402 | OCEAN DRAGON |
+------+---------+--------------+
17 rows in set (0.02 sec)
可以执行下列语句,可以含有"_"!
mysql> select enq1.hullnoid, hull_no.name from enq1, hull_no where hull_no.id =1
;
是否数据表格名不能含有"_"(hull_no)?
mysql> select enq1.hullnoid, hull_no.id hull_no.name from enq1, hull_no where enq1.hullnoid = hull_no.id
and hull_no.name like "%DRAGON%";
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near
'.name from enq1, hull_no where enq1.hullnoid = hull_no.id and hull_no.name like ' at line 1
注意要用前后两个"%"!
mysql> select id,ourref,ownerno from enq1 where ourref like "%YTP%" or ownerno like "%YTP%";
+------+---------+----------------+
| id | ourref | ownerno |
+------+---------+----------------+
| 17 | 8052310 | 080523-YTP3991 |
| 34 | 8052704 | 080527-YTP4067 |
| 387 | 8070304 | YTP4849 |
| 428 | 8070806 | 080708-YTP4987 |
| 941 | 8081321 | 080813-YTP5768 |
| 942 | 8081322 | 808013-YTP5778 |
| 944 | 8081401 | 080814-YTP5789 |
| 954 | 8081501 | 080815-YTP5818 |
| 1244 | 8091003 | 080910-YTP6460 |
| 1245 | 8091004 | 080910-YTP6461 |
| 1247 | 8091006 | 080910-YTP6463 |
| 1288 | 8091504 | 080912-YTP6532 |
| 1289 | 8091505 | 080912-YTP6531 |
| 1290 | 8091506 | 080912-YTP6530 |
| 1291 | 8091507 | 080912-YTP6529 |
| 1292 | 8091508 | 080912-YTP6528 |
| 1298 | 8091605 | 080916-YTP6590 |
| 1450 | 8100210 | YTP6935 |
+------+---------+----------------+
mysql> select id,ourref,ownerno from enq1 where ourref like "YTP%" or ownerno like "YTP%";
+------+---------+---------+
| id | ourref | ownerno |
+------+---------+---------+
| 387 | 8070304 | YTP4849 |
| 1450 | 8100210 | YTP6935 |
+------+---------+---------+
2 rows in set (0.00 sec)
mysql> select id,ourref from enq1 where ourref like "81002%";
+------+---------+
| id | ourref |
+------+---------+
| 1441 | 8100201 |
| 1442 | 8100202 |
| 1443 | 8100203 |
| 1444 | 8100204 |
| 1445 | 8100205 |
| 1446 | 8100206 |
| 1447 | 8100207 |
| 1448 | 8100208 |
| 1449 | 8100209 |
| 1450 | 8100210 |
| 1451 | 8100211 |
+------+---------+
11 rows in set (0.00 sec)
mysql> select name from main_maker1 where name like "A%" order by name;
+--------------------------------+
| name |
+--------------------------------+
| AALBORG INDUSTRIES KK |
| AALBORG SUNROD KK. |
| ABB |
| ABB TURBO SYSTEM |
| AKASAKA |
| AKASAKA DIESEL |
| ALFA LAVAL |
| ALUP KOMPRESSOREN GMBH |
| AMEROID JAPAN |
| AMEROID JAPAN SERVICE CO.,LTD. |
| AMRI KSB |
| AQUAMASTER-RAUMA LTD. |
| AUTRONICA |
+--------------------------------+
13 rows in set (0.02 sec)
DBD::mysql::db do failed: Unknown column 'seriesid' in 'field list' at insert_ta
bles.pl line 65.
mysql> alter table enq1 add seriesid text after enq2s;
Query OK, 0 rows affected (0.47 sec)
Records: 0 Duplicates: 0 Warnings: 0
INSERT INTO main_type1 (id,name,series,gname_id,maker_id,GR,DWG,memo) VALUES("11
24","6HC582SEB-KYE-X1","XXXSERIES","86","","","XXXDWG=6HC582EC-FKYE","")
DBD::mysql::db do failed: Incorrect integer value: '' for column 'gname_id' at r
ow 1 at insert_tables.pl line 65.
mysql> alter table enq1 change gname_id gname_id text;
ERROR 1054 (42S22): Unknown column 'gname_id' in 'enq1'
mysql> alter table main_type1 change gname_id gname_id text;
Query OK, 948 rows affected (0.30 sec)
Records: 948 Duplicates: 0 Warnings: 0
mysql> show columns from main_type1;
+----------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(100) | YES | | NULL | |
| series | text | YES | | NULL | |
| gname_id | text | YES | | NULL | |
| maker_id | int(11) | YES | | NULL | |
| GR | text | YES | | NULL | |
| DWG | text | YES | | NULL | |
| memo | text | YES | | NULL | |
+----------+--------------+------+-----+---------+----------------+
8 rows in set (0.00 sec)
mysql> alter table enq1 change maker_id maker_id text;
ERROR 1054 (42S22): Unknown column 'maker_id' in 'enq1'
mysql> alter table main_type1 change maker_id maker_id text;
Query OK, 714 rows affected (0.22 sec)
Records: 714 Duplicates: 0 Warnings: 0
mysql> show columns from main_type1;
+----------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(100) | YES | | NULL | |
| series | text | YES | | NULL | |
| gname_id | text | YES | | NULL | |
| maker_id | text | YES | | NULL | |
| GR | text | YES | | NULL | |
| DWG | text | YES | | NULL | |
| memo | text | YES | | NULL | |
+----------+--------------+------+-----+---------+----------------+
8 rows in set (0.03 sec)
mysql> select id,enq1id from enq2 where enq1id = '0';
+------+--------+
| id | enq1id |
+------+--------+
| 1025 | 0 |
| 1090 | 0 |
| 1276 | 0 |
| 1277 | 0 |
| 1279 | 0 |
| 1280 | 0 |
| 1359 | 0 |
+------+--------+
7 rows in set (0.00 sec)
mysql> update enq1 set enq2s = '1025' where id = 4;
Query OK, 1 row affected (0.08 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> update enq2 set enq1id = '4' where id = 1025;
Query OK, 1 row affected (0.05 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select * from enq1 where enq2s like "1336"\G
*************************** 1. row ***************************
id: 1224
time: 2008-09-08
ourref: 8090807
owner: 11
ownerno: 08M047
hullnoid: 462
type1id: 1226
partsid: 1
QTY: 1
memo:
LANGUAGEid: 1
makerid: 20
enq2s: 1336
seriesid: C
*************************** 2. row ***************************
id: 1225
time: 2008-09-08
ourref: 8090808
owner: 11
ownerno: 08M048,49
hullnoid: 462
type1id: 1185
partsid: 17=18=19=20=21=22
QTY: 10=10=10=10=10=10
memo:
LANGUAGEid: 1
makerid: 78
enq2s: 1336
seriesid: C
2 rows in set (0.02 sec)
mysql> update enq2 set enq1id = '1225' where id = 1090;
Query OK, 1 row affected (0.06 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> update enq1 set enq2s = '1090' where id = 1225;
Query OK, 1 row affected (0.05 sec)
Rows matched: 1 Changed: 1 Warnings: 0
返回