在数据库中所有数据库都是支持多表联合查询了,下面我来介绍利用left join在mysql中实现多表联合查询,有需要 的朋友可参考.
left join语法,代码如下:
- table_references:
- table_reference[,table_reference]…
- table_reference:
- table_factor
- |join_table
- table_factor:
- tbl_name[[AS]alias]
- [{USE|IGNORE|FORCE}INDEX(key_list)]
- |(table_references)
- |{OJtable_referenceLEFTOUTERJOINtable_reference
- ONconditional_expr}
例,代码如下:
- mysql>CREATETABLE`product`(
- `id`int(10)unsignedNOTNULLauto_increment,
- `amount`int(10)unsigneddefaultNULL,
- PRIMARYKEY(`id`)
- )ENGINE=MyISAMAUTO_INCREMENT=5DEFAULTCHARSET=latin1
- mysql>CREATETABLE`product_details`(
- `id`int(10)unsignedNOTNULL,
- `weight`int(10)unsigneddefaultNULL,
- `exist`int(10)unsigneddefaultNULL,
- PRIMARYKEY(`id`)
- )ENGINE=MyISAMDEFAULTCHARSET=latin1
- mysql>INSERTINTOproduct(id,amount)
- VALUES(1,100),(2,200),(3,300),(4,400);
- QueryOK,4rowsaffected(0.00sec)
- Records:4Duplicates:0Warnings:0
- mysql>INSERTINTOproduct_details(id,weight,exist)
- VALUES(2,22,0),(4,44,1),(5,55,0),(6,66,1);
- QueryOK,4rowsaffected(0.00sec)
- Records:4Duplicates:0Warnings:0
查询,代码如下:
- mysql>SELECT*FROMproductLEFTJOINproduct_details
- ON(product.id=product_details.id)
- ANDproduct.amount=200;--phpfensi.com
- +----+--------+------+--------+-------+
- |id|amount|id|weight|exist|
- +----+--------+------+--------+-------+
- |1|100|NULL|NULL|NULL|
- |2|200|2|22|0|
- |3|300|NULL|NULL|NULL|
- |4|400|NULL|NULL|NULL|
- +----+--------+------+--------+-------+
- 4rowsinset(0.01sec)
超级简单吧,那么有朋友问我怎么在MySQL中实现多表关联数据同时删除category中的id(栏目编号)字段作为该表的主键(primary key).唯一标识了一个栏目的信息。
news 中的id字段作为该表的主键(primary key).唯一标识了一个栏目的信息。
category_id(栏目编号)字段与category表的id字段相关联。
SQL删除语句,代码如下:
delete category,news from category left join news on category.id = news.category_id