我有自定义查询从数据库中获取数据。我在订购时遇到问题。
这是我用来获取数据的方法。
SELECT a.*, b.* FROM wp_terms AS a INNER JOIN wp_term_taxonomy AS b ON a.term_id = b.term_id
WHERE
b.taxonomy = "ticker" AND(
a.name LIKE "aa%" OR b.description LIKE "aa%"
)
ORDER BY
CASE
WHEN(
a.name LIKE "aa%" AND b.description LIKE "aa%"
) THEN 1
WHEN(
a.name LIKE "aa%" AND b.description NOT LIKE "aa%"
) THEN 2
ELSE 3
END,a.name ASC
LIMIT 0, 10
结果是这样显示的。
显示我需要一个结果来显示
AA
首先是其他结果。
它正在处理单个字符
SELECT a.*, b.* FROM wp_terms AS a INNER JOIN wp_term_taxonomy AS b ON a.term_id = b.term_id
WHERE
b.taxonomy = "ticker" AND(
a.name LIKE "v%" OR b.description LIKE "v%"
)
ORDER BY
CASE
WHEN(
a.name LIKE "v%" AND b.description LIKE "v%"
) THEN 1
WHEN(
a.name LIKE "v%" AND b.description NOT LIKE "v%"
) THEN 2
ELSE 3
END,a.name ASC
LIMIT 0, 10
最佳答案
字母排序的最佳解决方案是先按长度排序,然后按值排序 -
SELECT a.*,
b.*
FROM wp_terms AS a
INNER JOIN wp_term_taxonomy AS b
ON a.term_id = b.term_id
WHERE b.taxonomy = "ticker"
AND( a.name LIKE "aa%"
OR b.description LIKE "aa%" )
ORDER BY
CASE
WHEN( a.name LIKE "aa%"
AND b.description LIKE "aa%" )
THEN 1
WHEN( a.name LIKE "aa%"
AND b.description NOT LIKE "aa%" )
THEN 2
ELSE 3
END,
LENGTH(a.name),
a.name ASC LIMIT 0,
10
关于mysql - 在sql结果中排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59639703/