Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 6004589
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 23, 20262026-05-23T01:17:03+00:00 2026-05-23T01:17:03+00:00

I’ve mixed up with a strange behavior of MySQL query. I have next mysql

  • 0

I’ve mixed up with a strange behavior of MySQL query. I have next mysql query:

SELECT 'username','status', 'field_1', 'field_2', 'field_3', 'field_4',  
    FROM my_table 
    ORDER by field_1 DESC, field_2 DESC, field_3 DESC, field_4 DESC 
    LIMIT 0,10 

By the idea, it has to order 10 rows in descending method depending on how many values fields have in ORDER BY condition. But in the result I get the next one:

kate 103
pete 101
steve 102

instead of

kate 103
steve 102
pete 101

Does anyone know why it set incorrect order? And what to do in order to make the proper ORDER BY DESC condition?

Is it possible to use MAX() for several fields? If yes, maybe it is possible to organize the MySQL query like this?

SELECT 'username','status', 'field_1', 'field_2', 'field_3', 'field_4', MAX(field_1,field_2,field_3,field_4) AS total 
    FROM my_table 
    ORDER by total DESC 
    LIMIT 0,10
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-23T01:17:04+00:00Added an answer on May 23, 2026 at 1:17 am

    You can’t use MAX() because that function returns the largest value in one column over many rows. But you can use MySQL’s GREATEST() function. This returns the largest of its arguments, which all come from one row.

    SELECT `username`, `status`, GREATEST(field_1,field_2,field_3,field_4) AS field_greatest
    FROM my_table
    ORDER BY field_greatest DESC
    LIMIT 0,10
    

    But I would also comment that you have violated 1st Normal Form by storing multiple columns that should be the same "kind" of data. The consequences are that you face this troublesome query. Also you’ll need to rewrite all your queries when you add a fifth field.

    Instead, create a second table and store all the "fields" in a single column, with a reference to the user. Then you can join the tables:

    SELECT t.username, t.status, f.field
    FROM my_table AS t
    LEFT OUTER JOIN (SELECT username, MAX(field) AS field FROM my_fields GROUP BY username) AS f
      ON t.username = f.username
    ORDER BY f.field DESC
    LIMIT 0,10
    

    Or my favorite way of getting the row with the greatest value per group:

    SELECT t.username, t.status, f1.field
    FROM my_table AS t
    JOIN my_fields AS f1 ON t.username = f1.username
    LEFT OUTER JOIN my_fields AS f2 ON t.username = f2.username AND f1.field < f2.field
    WHERE f2.username IS NULL
    ORDER BY f1.field DESC
    LIMIT 0,10
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have a string like this: La Torre Eiffel paragonata all&#8217;Everest What PHP function
I have a .ini file as follows: [playlist] numberofentries=2 File1=http://87.230.82.17:80 Title1=(#1 - 365/1400) Example
link Im having trouble converting the html entites into html characters, (&# 8217;) i
I have just tried to save a simple *.rtf file with some websites and
this is what i have right now Drawing an RSS feed into the php,
I have a small JavaScript validation script that validates inputs based on Regex. I
I have this code to decode numeric html entities to the UTF8 equivalent character.
I have a French site that I want to parse, but am running into
I'm parsing an RSS feed that has an &#8217; in it. SimpleXML turns this
I have this code: - (void)parser:(NSXMLParser *)parser foundCDATA:(NSData *)CDATABlock { NSString *someString = [[NSString

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.