出于某種原因,我無法設法先按空字串然后按 id DESC 對結果進行排序,它看起來像 ORDER BY url ASC是按字串長度排序的。
如何告訴查詢按空而不是按長度而不是按 id desc 排序?
示例鏈接
SELECT * FROM r WHERE r.type IN('product','manual_change') ORDER BY url ASC, id DESC
CREATE TABLE `r` (
`id` int(11) NOT NULL,
`id_type` int(11) NOT NULL,
`type` enum('category','product','manufacturer','manual_change') NOT NULL,
`redirect_type` tinyint(1) NOT NULL,
`url` varchar(300) NOT NULL,
`link_from` varchar(300) NOT NULL COMMENT 'manual change, use url as LINK_TO'
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT INTO `r` (`id`, `id_type`, `type`, `redirect_type`, `url`, `link_from`) VALUES
(38, 0, 'manual_change', 0, '', ''),
(39, 0, 'manual_change', 0, 'example1.com', ''),
(29, 27406, 'product', 0, 'example11.com', ''),
(42, 0, 'manual_change', 0, 'example111.com', ''),
(41, 27339, 'product', 0, 'example1111.com', ''),
(24, 27382, 'product', 0, 'example1111.com', ''),
(43, 0, 'manual_change', 0, 'example.com', ''),
(22, 27352, 'product', 0, 'example.com', ''),
(20, 27319, 'product', 0, 'example.com', ''),
(19, 27322, 'product', 0, 'example.com', '');
uj5u.com熱心網友回復:
您可以按情況訂購:
SELECT *
FROM r
WHERE r.type IN('product','manual_change')
ORDER BY case when r.url='' then r.url end desc,id desc ;
https://dbfiddle.uk/?rdbms=mysql_5.7&fiddle=9273bc6070ce3b278e2f65d6f791d1c9
我建議最好使用 null 而不是空字串
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/468279.html
標籤:mysql
