PDA

View Full Version : ترتیب داده ها در mysql منهای اولی



sepideh2
یک شنبه 08 مهر 1386, 12:06 عصر
سلام خدمت دوستان
یک جدول توی mysql که فیلد کلیدیش ID شون است حالا می خواهم یک کوئریاز جدولم بگیرم که بر اساس id به صورت نزولی مرتب شوند اما نمی خواهم آخرین id (جدیدترین مطلبی را که وارد شده) نمایش داده شود.
با تشکر

mrrajabi
یک شنبه 08 مهر 1386, 20:33 عصر
Select * from tableName
Where ID not in(Select Top 1 ID from tableName order by ID DESC)
order by ID DESC
اینو دقیقاً نمی دونم جواب بده یا نه.حالا یه امتحان بکنید ضرر نداره.

oxygenws
یک شنبه 08 مهر 1386, 20:39 عصر
دلیل نداره وقتی جواب سوالی رو نمی دونی، جواب بدی و بیشتر کاربر رو به چالش بکشونی!!!!

mrrajabi
دوشنبه 09 مهر 1386, 09:17 صبح
توی درست بودن گرامر دستور شک دارم ولی میدونم الگوریتم همینه.

hossein taghi zadeh
دوشنبه 09 مهر 1386, 10:03 صبح
با سلام


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


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

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

oxygenws
دوشنبه 09 مهر 1386, 10:03 صبح
خوب من مطمئنم شما SQL Server رو خوب بلدی، و البته مطمئنم MySQL بلد نیستی :)

oxygenws
دوشنبه 09 مهر 1386, 10:13 صبح
اگر همیشه منظورت فقط و فقط کاهش یک سطره، بهتره این کار رو سمت پایگاه داده انجام ندی و سمت برنامه نویسی بنویسی. چون تقریبا سرعت کوئری ات با این روش دو برابر میشه.

mrrajabi
دوشنبه 09 مهر 1386, 12:08 عصر
اگر همیشه منظورت فقط و فقط کاهش یک سطره، بهتره این کار رو سمت پایگاه داده انجام ندی و سمت برنامه نویسی بنویسی. چون تقریبا سرعت کوئری ات با این روش دو برابر میشه.درسته
ولی ایشون فقط کوئری خواستن.دیگه با چند و چون کار ,کاری نداشتن.

I,Nobody
سه شنبه 10 مهر 1386, 15:03 عصر
اگر همیشه منظورت فقط و فقط کاهش یک سطره، بهتره این کار رو سمت پایگاه داده انجام ندی و سمت برنامه نویسی بنویسی. چون تقریبا سرعت کوئری ات با این روش دو برابر میشه.

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


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

sepideh2
پنج شنبه 12 مهر 1386, 09:05 صبح
دم همه دوستای گلم گرم.
فکر نمی کردم اینجا به این زودی اینهمه جواب داده بشه.
راه اول را که به نتیجه نرسیدم. اما پس از کلی فکر کردن روش آخر به کارم اومد که دیدم دوستان زحمتش رو کشیدن.

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

mrrajabi
پنج شنبه 12 مهر 1386, 09:45 صبح
ولی واقعاً برام سوال پیش اومده اگه کلی رکورد (با تعداد نامعلوم)داشته باشم بخوام مثلاً 100 تای اول آن نمایش داده نشه چکار باید بکنم.یبار باید تعداد رکورد ها رو بدست بیارید و بعدش همون Select‌با Limit رو بکار ببرید.



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

I,Nobody
پنج شنبه 12 مهر 1386, 18:54 عصر
البته فکر کنم اگه یه مقدار کوئری رو پیچیده اش کرد، بشه با یک کوئری هم گرفت.
تست میکنم، اکه موفق شدم، میذارمش