0
我创建了一个mySQL查询来搜索单词并通过相关性排序结果(Sortkey)。例如,如果我搜索“测试字”,我的查询看起来像这样(和它的作品就像一个魅力):MySQL - 与RLIKE和GROUP BY联合选择 - 无法插入INNER JOIN
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中加入我的查询,我试图把它放在任何地方,没有任何工作。通常情况下,以显示所有结果,而不寻找关键字,我用这个查询(再次,它工作正常):
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语句搜索到客户的设备只。请帮帮我!
谢谢!这正是我需要的! – pmrotule
经过反思,我还需要从“live_data”表中获取“SERVICE”和“HOURS”值。我在INNER JOIN行和WHERE行之间添加了“LEFT JOIN live_data ON live_data.EQUIPMENT_ID = innerresult.EQUIPMENT_ID”行,但我不知道如何选择“service”和“hours”......我尝试了几件事情,但这并不成功...... – pmrotule
选择innerresult。*,live_Data.service,live_data.hours从... –