I would like to know if there is a way to sort data in a table, not when selecting it, but the actual data in the table. I would like to sort it by 2 columns though. For example the "topic" should go from A-Z and then inside all rows with a topic of "A" should be sorted by the book_title... So basically priority 1: sort by topic, priority 2: sort by title...


How would you know that data are sorted? MySQL does not guarantee you any sequence of records if you do not use an ORDER BY clause.
What you can do, though, is to create a new table and SELECT your data INTO this table in a certain sort order.

the concept of sorting the data in the table is meaningless, as you can only see the data when you query the table. so use an order by clause and for all practical purposes, you will image that your table is sorted.

When you delete a few rows and then insert new ones, they could go anywhere in the table, but you'd never know.

What purpose do you imagine that a "sorted" table would server?

Hi drjohn,

Ya you actually have a good point... so in that case, is it possible to SELECT data using 2 columns? Or would I have to sort it using ASC for the topics then use code on the back-end to sort that?

of course, select whatever you want from a table, and put in as many or few order by bits as you need.

select col1, col2, col3, col4, col5, col5
from mytable
order by col2 desc, col5 asc;

or whatever suits you

NICE! awesome man! thanks so much - works like a charm!