ray Posted January 12, 2009 Report Share Posted January 12, 2009 (edited) ideja ir tāda, ka vajadzētu izveidot vaicājumu (visu vienā vaicājumā), bet nav pagaidām ne jausmas kā to izdarīt. Tātad ir tabula (id, title, number, statuss). Vajadzētu atlasīt no sākuma visus ierakstus, kur number=4 un pēc tam lai visi pārējie tabulas ieraksti (izņemot jau iepriekš atlasītos). Ir idejas? Edited January 12, 2009 by ray Link to comment Share on other sites More sharing options...
bubu Posted January 12, 2009 Report Share Posted January 12, 2009 easy: SELECT *, IF(number = 4, 1, 2) AS kaartiiba FROM tabule ORDER BY kaartiiba tik performance gan var gadīties nebūs labāka par diviem atsevišķiem kverijiem. otrs variants ir: (SELECT 1 AS kaartiba, * FROM tabule WHERE number = 4) UNION (SELECT 2, * FROM tabule WHERE number != 4) ORDER BY kaartiiba Link to comment Share on other sites More sharing options...
Gints Plivna Posted January 12, 2009 Report Share Posted January 12, 2009 (edited) Gadījumā, ja number kolona drīkst būt NULL, tad abi vaicājumi nav ekvivalenti ;) Jebkurā gadījumā, man jau liekas, ka skanēt vienreiz tabulu un sakārtot pēc kaut kādas izrēķinātas izteiksmes ir ātrak nekā skanēt 2reiz un arī tomēr veikt kārtošanu. Bet nu protams, ka tikai tests dotu mums precīzu atbildi un iespējams tā rezultāts būtu atkarīgs no datu sadalījuma :) Ak un vēl UNION vietā tomēr derētu UNION ALL, lai pilnīgi atšķirīgu kopu gadījumā neveiktu kaut kādu unikālo ierakstu meklēšanu. Gints Plivna http://datubazes.wordpress.com Edited January 12, 2009 by Gints Plivna Link to comment Share on other sites More sharing options...
Recommended Posts