У меня есть требование получить пересечение некоторых результатов в DB mysql. Но после того, как googling узнал, что нет ключевого слова mysql intersect. Ниже приведены мои таблицы образцов.Работайте для ключевого слова intersect в mysql
gene table
+------+--------+---------+
| id | symbol | test_id |
+------+--------+---------+
| -1 | A | -1 |
| 8 | A | 3 |
| 9 | G | 3 |
| -1 | A | -1 |
| -2 | B | -1 |
| -3 | C | -1 |
| 1 | A | 1 |
| 2 | B | 1 |
| 3 | C | 1 |
| 4 | B | 2 |
| 5 | C | 2 |
| 6 | D | 2 |
| 7 | E | 2 |
| 8 | A | 3 |
| 9 | G | 3 |
| 10 | F | 3 |
| 11 | C | 3 |
| 12 | C | 4 |
| 13 | G | 4 |
| 14 | F | 4 |
| 15 | M | 4 |
| 16 | N | 4 |
+------+--------+---------+
test table
+------+-------+
| id | name |
+------+-------+
| -1 | test0 |
| 3 | test3 |
| -1 | test0 |
| 1 | test1 |
| 2 | test2 |
| 3 | test3 |
| 4 | test4 |
+------+-------+
Теперь я хочу сформулировать запрос, который даст мне тесты, которые являются общими для предоставленных генов. например Я обеспечу ген A, B, C, и я должен получить следующий результат:
id name id symbol
---------------------------
-1 | test0 | -1 | A
-1 | test0 | -2 | B
-1 | test0 | -3 | C
1 | test1 | 1 | A
1 | test1 | 2 | B
1 | test1 | 3 | C
Я просто пытался сформировать запрос, следующим образом, но не работать, получая пустой результирующий и если я использую «или» в котором предложение получает тесты для всех генов в разделе where.
select distinct t.id, t.name, g.id, g.symbol from tests t
join genes g on t.id = g.test_id
where g.symbol = 'A' and g.symbol='B' and g.symbol='C';
Пожалуйста, помогите мне построить запрос.
'где g.symbol в ('A',» B ',' C ') ' – splash58
@ splash58 Я попробовал' или 'вместо' и 'У меня были тесты всех трех генов, но мне нужно только пересечение (общее для этих трех генов) –
Зачем вам не нужно тестировать с идентификатором -1 вернулся? У этого также есть гены A, B и C? – GarethD