Вот мой стол:Как искать в нескольких столбцах?
// table
+----+------+------+
| id | col1 | col2 |
+----+------+------+
| 1 | 1 | 1 |
| 2 | 1 | 2 |
| 3 | 1 | 3 |
| 4 | 2 | 1 |
| 5 | 2 | 2 |
| 6 | 3 | 1 |
| 7 | 3 | 2 |
| 8 | 3 | 3 |
| 9 | 3 | 4 |
| 10 | 3 | 5 |
+----+------+------+
Теперь я хочу, чтобы искать в обоих col1
и col2
. Что-то вроде этого:
select * from table where col1,col2 IN (1,2);
И я хочу это выхода:
+----+------+------+
| id | col1 | col2 |
+----+------+------+
| 1 | 1 | 1 |
| 2 | 1 | 2 |
| 3 | 1 | 3 |
| 4 | 2 | 1 |
| 5 | 2 | 2 |
| 6 | 3 | 1 |
| 7 | 3 | 2 |
+----+------+------+
Ну, моя проблема заключается в этой части: ... where col1,col2 IN (1,2)
. Как я могу это решить?
Примечание: Я могу сделать это вот так: ... where col1 IN (1,2) or ,col2 IN (1,2)
. Но это так, я должен создать два отдельных индекса для каждого столбца. В то время как мне нужен запрос, который необходим для индекса группы следующим образом: KEY NameIndex (col1, col2)
Попробуйте 'WHERE 1 IN (col1, col2) ИЛИ 2 IN (col1, col2)' –
@GiorgosBetsos Ok Тпх, просто ваше решение лучше, чем это? 'где col1 IN (1,2) или, col2 IN (1,2)'? – stack
Используйте 'EXPLAIN', чтобы узнать, рекомендуют ли предикаты использовать ваш составной индекс. Если нет, то то, что я предлагаю, бесполезно. –