The default behavior of PGFplots is to use x coordinates as... well, coordinates. So naturally, the point with the lowest x value will appear on the left. What you want to achieve is to use the x column as symbolic tick labels instead of coordinates, and additionally use the line number as the proper x coordinate of the plot. The latter can be achieved with x expr=\coordindex. This removes what you call "sorting" and shows the y coordinates in the order in which they appear in the table, positions at x=0, x=1, etc...
Using the x column as symbolic tick labels is a bit trickier. This answer by Jake demonstrates how to do that by defining a new key xticklabels from table, which has to be used on the axis environment. Additionally, the data table has to be provided to the key and the addplot command, because the tick labels belong to the axis, which can contain multiple plots, but only one set of ticks. Also, you must specify xtick=data to get a tick for each data point in your table.

The full example looks like this:
\documentclass[standalone]{book}
\usepackage{tikz,pgfplots,pgfplotstable}
\pgfplotstableread{
x y label
7 10 a
10 8 a
8 7 a
4 6 a
9 5 a
1 5 a
5 4 a
3 4 a
2 3 a
6 2 a
}{\MyData}
\makeatletter
\pgfplotsset{
/pgfplots/xticklabels from table/.code 2 args={%
\pgfplotstablegetcolumn{#2}\of{#1}\to\pgfplots@xticklabels
\let\pgfplots@xticklabel=\pgfplots@user@ticklabel@list@x
}
}
\makeatother
\begin{document}
\begin{tikzpicture}
\begin{axis}[%
scatter/classes={%
a={mark=o,draw=black}},
xtick=data,
xticklabels from table={\MyData}{x}
]
\addplot[scatter,only marks,scatter src=explicit symbolic]%
table[meta=label, x expr=\coordindex, ] {\MyData};
\end{axis}
\end{tikzpicture}
\end{document}