for long time i have used this method to order my lists (for html selects):
SELECT '' AS ID, '' AS Name UNION
SELECT ID, Name FROM (SELECT ID, Name FROM myTable ORDER BY Name) AS myTableTmp
but after update to new MySQL(MariaDB) version i find out, this sorting is not working anymore. Like explained here it conflicts with SQL standart: mysql - order by inside subquery
What is best practice to get desired order?
Or should i use easy way, and add LIMIT 65000
to nested query?
Edit:
Well, my original example was not precise enough, so people was able to misunderstood me. Here is corrected example:
CREATE TABLE IF NOT EXISTS `myTable` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`Name` varchar(120) DEFAULT NULL,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=4 ;
INSERT INTO `myTable` (`ID`, `Name`) VALUES
(1, 'Banana'),
(2, 'Apple'),
(3, NULL);
If i select in old version:
SELECT '0' AS ID, '-' AS Name UNION
SELECT ID, Name FROM (SELECT ID, Name FROM myTable ORDER BY Name) AS myTableTmp
I get:
0 -
3 NULL
2 Apple
1 Banana
How i get same result in new MySQL versions?