سلام خدمت دوستان
یک جدول توی mysql که فیلد کلیدیش ID شون است حالا می خواهم یک کوئریاز جدولم بگیرم که بر اساس id به صورت نزولی مرتب شوند اما نمی خواهم آخرین id (جدیدترین مطلبی را که وارد شده) نمایش داده شود.
با تشکر
Printable View
سلام خدمت دوستان
یک جدول توی mysql که فیلد کلیدیش ID شون است حالا می خواهم یک کوئریاز جدولم بگیرم که بر اساس id به صورت نزولی مرتب شوند اما نمی خواهم آخرین id (جدیدترین مطلبی را که وارد شده) نمایش داده شود.
با تشکر
Select * from tableName
Where ID not in(Select Top 1 ID from tableName order by ID DESC)
order by ID DESCاینو دقیقاً نمی دونم جواب بده یا نه.حالا یه امتحان بکنید ضرر نداره.
دلیل نداره وقتی جواب سوالی رو نمی دونی، جواب بدی و بیشتر کاربر رو به چالش بکشونی!!!!
توی درست بودن گرامر دستور شک دارم ولی میدونم الگوریتم همینه.
با سلام
SELECT * FROM tableName
WHERE ID < (SELECT MAX(ID) FROM tableName)
ORDER BY ID DESC
روش جناب/سرکار mrrajabi کاملا" درسته.نقل قول:
دلیل نداره وقتی جواب سوالی رو نمی دونی، جواب بدی و بیشتر کاربر رو به چالش بکشونی!!!!
خوب من مطمئنم شما SQL Server رو خوب بلدی، و البته مطمئنم MySQL بلد نیستی :)
اگر همیشه منظورت فقط و فقط کاهش یک سطره، بهتره این کار رو سمت پایگاه داده انجام ندی و سمت برنامه نویسی بنویسی. چون تقریبا سرعت کوئری ات با این روش دو برابر میشه.
درستهنقل قول:
اگر همیشه منظورت فقط و فقط کاهش یک سطره، بهتره این کار رو سمت پایگاه داده انجام ندی و سمت برنامه نویسی بنویسی. چون تقریبا سرعت کوئری ات با این روش دو برابر میشه.
ولی ایشون فقط کوئری خواستن.دیگه با چند و چون کار ,کاری نداشتن.
موافقم.نقل قول:
اگر همیشه منظورت فقط و فقط کاهش یک سطره، بهتره این کار رو سمت پایگاه داده انجام ندی و سمت برنامه نویسی بنویسی. چون تقریبا سرعت کوئری ات با این روش دو برابر میشه.
البته در یک صورت مخالفم :
اگر تعداد رکوردهایی رو که میخوای توی کوئریت بگیری، مشخصه(مثلاً 30 تا) می تونی اینکارو بکنی :
SELECT * FROM table ORDER BY id DESC LIMIT 1,30
دم همه دوستای گلم گرم.
فکر نمی کردم اینجا به این زودی اینهمه جواب داده بشه.
راه اول را که به نتیجه نرسیدم. اما پس از کلی فکر کردن روش آخر به کارم اومد که دیدم دوستان زحمتش رو کشیدن.
ولی واقعاً برام سوال پیش اومده اگه کلی رکورد (با تعداد نامعلوم)داشته باشم بخوام مثلاً 100 تای اول آن نمایش داده نشه چکار باید بکنم.
یبار باید تعداد رکورد ها رو بدست بیارید و بعدش همون Selectبا Limit رو بکار ببرید.نقل قول:
ولی واقعاً برام سوال پیش اومده اگه کلی رکورد (با تعداد نامعلوم)داشته باشم بخوام مثلاً 100 تای اول آن نمایش داده نشه چکار باید بکنم.
SELECT * FROM table ORDER BY id DESC LIMIT 101,nکه n همون تعداد رکوردها هست که از تابع count بدست میاد.
البته فکر کنم اگه یه مقدار کوئری رو پیچیده اش کرد، بشه با یک کوئری هم گرفت.
تست میکنم، اکه موفق شدم، میذارمش