# پایگاه‌های داده > سایر پایگاه‌های داده > MySQL >  ترتیب داده ها در mysql منهای اولی

## sepideh2

سلام خدمت دوستان 
یک جدول توی mysql که فیلد کلیدیش ID  شون است حالا می خواهم یک کوئریاز جدولم بگیرم که بر اساس id  به صورت نزولی مرتب شوند اما نمی خواهم آخرین id  (جدیدترین مطلبی را که وارد شده) نمایش داده شود.
 با تشکر

----------


## mrrajabi

Select * from tableName 
Where ID not in(Select Top 1 ID from tableName order by ID DESC)
order by ID DESCاینو دقیقاً نمی دونم جواب بده یا نه.حالا یه امتحان بکنید ضرر نداره.

----------


## oxygenws

دلیل نداره وقتی جواب سوالی رو نمی دونی، جواب بدی و بیشتر کاربر رو به چالش بکشونی!!!!

----------


## mrrajabi

توی درست بودن گرامر دستور شک دارم ولی میدونم الگوریتم همینه.

----------


## hossein taghi zadeh

با سلام

SELECT * FROM tableName 
WHERE ID < (SELECT MAX(ID) FROM tableName)
ORDER BY ID DESC




> دلیل نداره وقتی جواب سوالی رو نمی دونی، جواب بدی و بیشتر کاربر رو به چالش بکشونی!!!!


روش جناب/سرکار mrrajabi کاملا" درسته.

----------


## oxygenws

خوب من مطمئنم شما SQL Server رو خوب بلدی، و البته مطمئنم MySQL بلد نیستی :)

----------


## oxygenws

اگر *همیشه* منظورت *فقط و فقط* کاهش یک سطره، بهتره این کار رو سمت پایگاه داده انجام ندی و سمت برنامه نویسی بنویسی. چون تقریبا سرعت کوئری ات با این روش دو برابر میشه.

----------


## mrrajabi

> اگر *همیشه* منظورت *فقط و فقط* کاهش یک سطره، بهتره این کار رو سمت پایگاه داده انجام ندی و سمت برنامه نویسی بنویسی. چون تقریبا سرعت کوئری ات با این روش دو برابر میشه.


درسته
ولی ایشون فقط کوئری خواستن.دیگه با چند و چون کار ,کاری نداشتن.

----------


## I,Nobody

> اگر *همیشه* منظورت *فقط و فقط* کاهش یک سطره، بهتره این کار رو سمت پایگاه داده انجام ندی و سمت برنامه نویسی بنویسی. چون تقریبا سرعت کوئری ات با این روش دو برابر میشه.


موافقم.
البته در یک صورت مخالفم :
اگر تعداد رکوردهایی رو که میخوای توی کوئریت بگیری، مشخصه(مثلاً 30 تا) می تونی اینکارو بکنی :

SELECT * FROM table ORDER BY id DESC LIMIT 1,30

----------


## sepideh2

دم همه دوستای گلم گرم. 
فکر نمی کردم اینجا به این زودی اینهمه جواب داده بشه.
راه اول را که به نتیجه نرسیدم. اما پس از کلی فکر کردن روش آخر به کارم اومد که دیدم دوستان زحمتش رو کشیدن.

ولی واقعاً برام سوال پیش اومده اگه کلی رکورد (با تعداد نامعلوم)داشته باشم بخوام مثلاً 100 تای اول آن نمایش داده نشه چکار باید بکنم.

----------


## mrrajabi

> ولی واقعاً برام سوال پیش اومده اگه کلی رکورد (با تعداد نامعلوم)داشته باشم بخوام مثلاً 100 تای اول آن نمایش داده نشه چکار باید بکنم.


یبار باید تعداد رکورد ها رو بدست بیارید و بعدش همون Select‌با Limit رو بکار ببرید.

SELECT * FROM table ORDER BY id DESC LIMIT 101,nکه n همون تعداد رکوردها هست که از تابع count بدست میاد.

----------


## I,Nobody

البته فکر کنم اگه یه مقدار کوئری رو پیچیده اش کرد، بشه با یک کوئری هم گرفت.
تست میکنم، اکه موفق شدم، میذارمش

----------

