Mysql совпадение с неизвестным столбцом
У меня проблема с этим запросом MySQL:
select * from tb1 as a
where (select count(*) from tb2 as b
where Match(b.column1) against(`a.id`) ) = '1'
Mysql имеет эту ошибку:
1054 - Неизвестный столбец "a.id" в "предложении where"
Поэтому я хочу получить все записи в таблице tb1, где количество записей в таблице tb2, где a.id находится в столбце column1, равно 1.
Я надеюсь, что вы понимаете мою цель, иначе не стесняйтесь спрашивать.
2 ответа
Я почти уверен, что проблема в диапазоне данных. Вы используете подзапрос, и в этом подзапросе нет информации о 'a'. Вы можете использовать данные из подзапроса в основном запросе, но не наоборот. Попробуйте что-то подобное (я не могу проверить это, поэтому я не могу гарантировать, что запрос работает):
SELECT a.*, b.count(*) FROM tb1 AS a
LEFT JOIN tb2 AS b ON Match(b.column1) against(a.id)
HAVING b.count(*) = 1
Имя таблицы должно быть вне кавычек, "a.id" теперь обрабатывается как имя столбца (которого, конечно, не существует) вместо пары table.column:
against(a.`id`)