我有一个查询,用于在两个字段(FIELD_IMPORTANT 和 FIELD_2)中搜索“字符串”。
我想要结果;
如果在FIELD_IMPORTANT中找到“字符串”,则将结果与FIELD_IMPORTANT中具有“字符串”的记录一起排序在顶部, 然后是其他人...
可能吗?
到目前为止,我有以下内容:
SELECT
expert.expert_name, naf_add.FIELD_IMPORTANT, naf_level_5.FIELD_2,
ROUND(AVG(expert_rating.rating_global)) AS avg_rating_global
FROM naf_nomenclature
LEFT JOIN naf_add ON naf_add.naf_add_naf_level_5_code = naf_nomenclature.level_5_code
INNER JOIN naf_level_5 ON naf_level_5.level_5_code = naf_nomenclature.level_5_code
INNER JOIN expert ON expert.expert_level_5_code = naf_nomenclature.level_5_code
LEFT JOIN expert_rating ON expert_rating.rating_expert_id = expert.expert_id
WHERE
naf_add.FIELD_IMPORTANT LIKE '%elec%' OR
naf_level_5.FIELD_2 LIKE '%elec%'
GROUP BY expert.expert_name
ORDER BY fword DESC, avg_rating_global DESC
最佳答案
您可以在order by
中使用表达式:
order by (naf_add.FIELD_IMPORTANT LIKE '%elec%') desc,
fword, avg_rating_global
MySQL 将 bool 表达式视为数字上下文中的整数,“0”表示 false,“1”表示 true。因此,当表达式为 true 时,第一个键的值为“1”。 desc
将这些放在第一位。
关于mysql - 在 mySQL 中使用 WHERE 子句并在两列中搜索字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34311863/