У меня три таблицы MySQL:
table1
list
a
b
c
d
e
table2
list
d
c
b
f
e
table3
list
f
e
c
b
a
я хочу получить
list
b
c
e
Поскольку b, c, e являются общими во всех списках этих трех таблиц. Надеюсь, что не слишком много вложенных, потому что на самом деле это может быть более трех таблиц.
Попробуй это:
CREATE TABLE IF NOT EXISTS 'table1' (
'id' int(11) NOT NULL AUTO_INCREMENT,
'list' varchar(25),
PRIMARY KEY ('id')
) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS 'table2' (
'id' int(11) NOT NULL AUTO_INCREMENT,
'list' varchar(25),
PRIMARY KEY ('id')
) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS 'table3' (
'id' int(11) NOT NULL AUTO_INCREMENT,
'list' varchar(25),
PRIMARY KEY ('id')
) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;
INSERT INTO 'table1' ('list') VALUES ('a');
INSERT INTO 'table1' ('list') VALUES ('b');
INSERT INTO 'table1' ('list') VALUES ('c');
INSERT INTO 'table1' ('list') VALUES ('d');
INSERT INTO 'table1' ('list') VALUES ('e');
INSERT INTO 'table2' ('list') VALUES ('d');
INSERT INTO 'table2' ('list') VALUES ('c');
INSERT INTO 'table2' ('list') VALUES ('b');
INSERT INTO 'table2' ('list') VALUES ('f');
INSERT INTO 'table2' ('list') VALUES ('e');
INSERT INTO 'table3' ('list') VALUES ('f');
INSERT INTO 'table3' ('list') VALUES ('e');
INSERT INTO 'table3' ('list') VALUES ('c');
INSERT INTO 'table3' ('list') VALUES ('b');
INSERT INTO 'table3' ('list') VALUES ('a');
Запрос:
Select t1.list
From table1 as t1
INNER JOIN table2 as t2
ON t1.list = t2.list
INNER JOIN table3 as t3
on t2.list = t3.list
и вы также можете посетить sqlfiddle для запроса.
Вы можете использовать inner join
как показано ниже.
Select t1.list
From table1 as t1
INNER JOIN table2 as t2
ON t1.list = t2.list
INNER JOIN table3 as t3
on t2.list = t3.list
Подробнее о присоединении