Mysql多表查詢是大家經常會遇到的問題,下面就為您詳細介紹Mysql多表查詢的實現方法,希望可以讓您對Mysql多表查詢有更多的了解。
多表查詢:
- CREATE TABLE IF NOT EXISTS contact(
- contact_id int(11) NOT NULL AUTO_INCREMENT,
- user_name varchar(255),
- nom varchar(255),
- prenom varchar(255),
- mail varchar(64),
- passcode char(64),
- PRIMARY KEY(contact_id)
- );
- CREATE TABLE IF NOT EXISTS droit(
- droit_id int( 11 ) NOT NULL AUTO_INCREMENT ,
- droit varchar(255),
- PRIMARY KEY(droit_id)
- );
- CREATE TABLE IF NOT EXISTS contactdroit(
- contactdroit_id int(11) NOT NULL AUTO_INCREMENT,
- contact_id int( 11 ),
- droit_id int( 11 ),
- PRIMARY KEY( contactdroit_id )
- );
- Insert into contact(contact_id, user_name) values(1,'user1');
- Insert into contact(contact_id, user_name) values(2,'user2');
- Insert into contact(contact_id, user_name) values(3,'user3');
- Insert into droit(droit_id, droit) values(1,'admin');
- Insert into droit(droit_id, droit) values(2,'superuser');
- Insert into contactdroit(contact_id, droit_id) values(1, 1);
- Insert into contactdroit(contact_id, droit_id) values(2, 1);
- Insert into contactdroit(contact_id, droit_id) values(3, 2);
- SELECT c.contact_id, d.droit_id, d.droit FROM contact c, contactdroit cd, droit d
- where c.contact_id = cd.contact_id
- and cd.droit_id = d.droit_id;
結果:
- contact_id droit_id droit
- 1 1 admin
- 2 1 admin
- 3 2 superuser
多表聯查例子:
兩個方法都可以,inner join on 更好點。表結構沒貼出來,但比較好懂了。
簡單方法:
- select c.nom, e.nom
- from consultant c, affaire a, besoin b, salarie sa, site s, entreprise e
- where c.consultant_id=a.consultant_id and a.besoin_id=b.besoin_id and b.salarie_id=sa.salarie_id and ssa.site_id=s.site_id and s.entreprise_id=e.entreprise_id
inner join方法:
- select c.nom, e.nom
- from consultant c
- inner join affaire a on c.consultant_id=a.consultant_id
- inner join besoin b on a.besoin_id=b.besoin_id
- inner join salarie sa on b.salarie_id=sa.salarie_id
- inner join site s on ssa.site_id=s.site_id
- inner join entreprise e on s.entreprise_id=e.entreprise_id
MySQL分區表對於函數的限制
拆表用的MySQL存儲過程
深入探討MySQL鎖機制
詳解MySQL數據表類型
單表多字段MySQL模糊查詢的實現