Как переписать оператор, который использует расширения MySQL для GROUP BY, к стандартному оператору SQL?
Это использует MySQL Extensions to GROUP BY
и не может быть выполнен, если sql_mode
установлен в ONLY_FULL_GROUP_BY
,
-- SET sql_mode = ""; -- reset sql_mode and execute statement
SELECT
`courses`.`id` AS `id`,
`courses`.`title` AS `title`,
`courses`.`description` AS `description`,
MATCH (coursedata.title) AGAINST ('Salsa') * 5 + MATCH (coursedata.description) AGAINST ('Salsa') * 2 AS `relevance`
FROM `courses`
INNER JOIN `coursedata` ON `courses`.`id` = `coursedata`.`id`
GROUP BY `courses`.`id`
HAVING `relevance` >= '3'
Можно ли достичь того же эффекта стандартным SQL?
1 ответ
Кажется, работает...
SELECT * FROM (
SELECT
DISTINCT `courses`.`id` AS `id`,
`courses`.`title` AS `title`,
`courses`.`description` AS `description`,
MATCH (coursedata.title) AGAINST ('Salsa') * 5 + MATCH (coursedata.description) AGAINST ('Salsa') * 2 AS `relevance`
FROM `courses`
INNER JOIN `coursedata` ON `courses`.`id` = `coursedata`.`id`
) AS subselect
WHERE `relevance` >= '3'