我有一个查询,在两个字段( FIELD_IMPORTANT和FIELD_2 )中搜索“string”。
我想要有结果;
如果在FIELD_IMPORTANT中找到“string”,那么将结果排序,记录的顶部是FIELD_IMPORTANT中的“string”,然后其他的.
有可能吗?
到目前为止,我有以下几点:
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发布于 2015-12-16 12:23:35
可以在order by中使用表达式。
order by (naf_add.FIELD_IMPORTANT LIKE '%elec%') desc,
fword, avg_rating_globalMySQL将布尔表达式视为数值上下文中的整数,其中"0“表示false,"1”表示true。因此,当表达式为true时,第一个键的值为"1“。desc把这些放在第一位。
https://stackoverflow.com/questions/34311863
复制相似问题