我创建了一个 mySQL 查询来搜索单词并按相关性(排序键)对结果进行排序。例如,如果我搜索“test word”,我的查询将如下所示(并且它的工作原理就像一个魅力):
SELECT *
FROM ( SELECT *, 1 as SortKey
FROM equipments
WHERE (
DESCRIPTION RLIKE '[[:<:]]test word[[:>:]]'
OR EQUIPMENT_ID RLIKE '[[:<:]]test word[[:>:]]'
OR CATEGORY RLIKE '[[:<:]]test word[[:>:]]'
)
UNION SELECT *, 2 as SortKey
FROM equipments
WHERE (
(DESCRIPTION RLIKE '[[:<:]]test[[:>:]]' OR
EQUIPMENT_ID RLIKE '[[:<:]]test[[:>:]]' OR
CATEGORY RLIKE '[[:<:]]test[[:>:]]' OR
DESCRIPTION RLIKE '[[:<:]]tests[[:>:]]' OR
EQUIPMENT_ID RLIKE '[[:<:]]tests[[:>:]]' OR
CATEGORY RLIKE '[[:<:]]tests[[:>:]]')
AND
(DESCRIPTION RLIKE '[[:<:]]word[[:>:]]' OR
EQUIPMENT_ID RLIKE '[[:<:]]word[[:>:]]' OR
CATEGORY RLIKE '[[:<:]]word[[:>:]]' OR
DESCRIPTION RLIKE '[[:<:]]words[[:>:]]' OR
EQUIPMENT_ID RLIKE '[[:<:]]words[[:>:]]' OR
CATEGORY RLIKE '[[:<:]]words[[:>:]]')
)
UNION SELECT *, 3 as SortKey
FROM equipments
WHERE (
(DESCRIPTION RLIKE '[[:<:]]test[[:>:]]' OR
EQUIPMENT_ID RLIKE '[[:<:]]test[[:>:]]' OR
CATEGORY RLIKE '[[:<:]]test[[:>:]]' OR
DESCRIPTION RLIKE '[[:<:]]tests[[:>:]]' OR
EQUIPMENT_ID RLIKE '[[:<:]]tests[[:>:]]' OR
CATEGORY RLIKE '[[:<:]]tests[[:>:]]')
)
OR (
(DESCRIPTION RLIKE '[[:<:]]word[[:>:]]' OR
EQUIPMENT_ID RLIKE '[[:<:]]word[[:>:]]' OR
CATEGORY RLIKE '[[:<:]]word[[:>:]]' OR
DESCRIPTION RLIKE '[[:<:]]words[[:>:]]' OR
EQUIPMENT_ID RLIKE '[[:<:]]words[[:>:]]' OR
CATEGORY RLIKE '[[:<:]]words[[:>:]]')
)
) T1 GROUP BY EQUIPMENT_ID ORDER BY `SortKey` ASC
所以,正如我所说,它有效,但我想在查询中插入 INNER JOIN,我试图将它放在任何地方,但没有任何效果。通常,为了显示所有结果而不查找关键字,我使用此查询(再次,它工作正常):
SELECT
`equipments`.`DESCRIPTION`,
`equipments`.`EQUIPMENT_ID`,
`equipments`.`CATEGORY`,
`live_data`.`SERVICE`,
`live_data`.`HOURS`
FROM equipments
INNER JOIN customers ON `customers`.`EQUIPMENT_ID` = `equipments`.`EQUIPMENT_ID`
LEFT JOIN live_data ON `live_data`.`EQUIPMENT_ID` = `equipments`.`EQUIPMENT_ID`
WHERE `customers`.`customer_id` = 1
我需要插入 INNER JOIN 来添加 WHERE 语句以仅搜索客户的设备。请帮助我!
最佳答案
select innerresult.* From
( Insert your query here ) innerresult
inner join customers On customers.equipment_id = innerresult.equipment_id
Where customers.customer_id = 1
我认为应该这样做。
关于MySQL - UNION SELECT 与 RLIKE 和 GROUP BY - 无法插入 INNER JOIN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20521469/