10 berichten aan het bekijken - 1 tot 10 (van in totaal 10)
  • Q:

    Bijdrager
    computer space

    MySQL sorteren, dan limit, dan sorteren, kan dat?

    Ik wil een query in MySQL alsvolgt sorteren:
    ORDER BY RAND() LIMIT 20, ORDER BY year
    Dus eerst 20 willekeurige kiezen, en die op jaar sorteren. Maar bovenstaande werkt niet. Hoe moet de syntax zijn?


    Bijdrager
    Domtoren
     
    SELECT * 
    FROM tabelnaam
    ORDER BY RAND( ) 
    LIMIT 20
     

    Bijdrager
    computer space

    en daarna sorteren op year dus!


    Bijdrager
    Verwijder

    SELECT * FROM (SELECT * FROM tabelnaam ORDER BY RAND( ) LIMIT 20) ORDER BY year


    Bijdrager
    computer space

    Die had ik ook gespot, maar met dit als resultaat:

    Every derived table must have its own alias


    Bijdrager
    computer space

    SELECT * FROM (SELECT * FROM tabelnaam ORDER BY RAND( ) LIMIT 20) AS alias ORDER BY year

    Zo doet ie het


    Bijdrager
    Fingerlicking

    SELECT * FROM table ORDER BY RAND(), year LIMIT 10;


    Bijdrager
    computer space

    Dat werkt niet. Geeft wel resultaat, maar niet op jaar gesorteerd.


    Bijdrager
    Fingerlicking

    En als je het andersom doet?? Dus ORDER BY year, RAND()?

    Heb het ff geprobeerd, zou moeten lukken. Alleen dan zou je year field enkel een int moeten zijn, anders moet je er DATE_FORMAT(date_added, ‘%Y’) van moeten maken:

     
    SELECT * FROM table ORDER BY DATE_FORMAT(date_added, '%Y'), RAND() LIMIT 20;
     

    Bijdrager
    computer space

    Andersom werkt hier niet, dan gaat ie namelijk 20 met het oudste jaar pakken, en die vervolgens husselen.

10 berichten aan het bekijken - 1 tot 10 (van in totaal 10)

Je moet ingelogd zijn om een reactie op dit onderwerp te kunnen geven.