MySQL, как найти общие данные в нескольких таблицах

0

У меня три таблицы 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 являются общими во всех списках этих трех таблиц. Надеюсь, что не слишком много вложенных, потому что на самом деле это может быть более трех таблиц.

Теги:
mysql-5.7

2 ответа

0
Лучший ответ

Попробуй это:

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 для запроса.

0

Вы можете использовать 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

Подробнее о присоединении

Ещё вопросы

Сообщество Overcoder
Наверх
Меню