PDA

View Full Version : سوال: کوئری نشان دادن چند ( مثلا 10 ) رکورد آخر



aagghh
چهارشنبه 29 شهریور 1391, 16:55 عصر
سلام
کوئری نشان دادن چند ( مثلا 10 ) رکورد آخر رو میخواستم
اگه کسی داره ممنون میشم راهنماییم کنه

miladamirzadeh
چهارشنبه 29 شهریور 1391, 18:00 عصر
سلام. اگر جدول شما کلیدی داره که می تونی بر اساس اون مرتب سازی رو انجام بدی می تونی از کوئری زیر استفاده کنی:
SELECT * FROM `table` ORDER BY `table`.`key` DESC LIMIT 10
یعنی جدول رو بر عکس مرتب کنی و ده تا رکورد آخر رو نمایش بدی. تو هر جدولی ممکنه راه های بهتری وجود داشته باشه.
می تونیم به این لینک (http://www.linuxforums.org/forum/servers/10507-mysql-viewing-table-last-records.html) هم استناد کنیم. به هر حال با توجه به پیاده سازی های ممکن راه های متفاوتی برای این مساله وجود داشته باشه.
ضمناً می دونی که اگر آی دی auto_increment باشه گارانتی نمیشه که هر رکورد جدیدی که اینزرت میشه آی دی اش بزرگتر از تمام رکوردهای موجود در جدول باشه. این مورد در مواقعی که پاک کردن رکورد از جدول و درج در آن زیاد اتفاق می افته دیده میشه.

AbiriAmir
پنج شنبه 30 شهریور 1391, 15:20 عصر
ضمناً می دونی که اگر آی دی auto_increment باشه گارانتی نمیشه که هر رکورد جدیدی که اینزرت میشه آی دی اش بزرگتر از تمام رکوردهای موجود در جدول باشه. این مورد در مواقعی که پاک کردن رکورد از جدول و درج در آن زیاد اتفاق می افته دیده میشه.
تا حالا همچین چیزی ندیدم
میشه منبع رو بگید؟

miladamirzadeh
پنج شنبه 30 شهریور 1391, 17:36 عصر
تا حالا همچین چیزی ندیدم
میشه منبع رو بگید؟

اول یه سوال می پرسم؟ اگر جدولی داشته باشی که تنها یک رکورد داشته باشه و مقدار آی دی آن که auto_increment هست بزرگترین مقدار int رو داشته باشه و بعد از اون مقدار دیگری نباشه، آی دی رکورد جدید چی میشه؟

منم اولین بار همچین چیزی که دیدم تعجب کردم. جدولی دارم که حدود 20 میلیون اینزرت توش انجام شد و همین تعداد رکورد پاک شد(به مرور زمان). رفتار mysql دیگه. توی SQL Server یا Oracle نمی دونم.

به این پست (http://www.linuxforums.org/forum/servers/10507-mysql-viewing-table-last-records.html#post57218) دقت کن.

این (http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html) رو هم بخون.

این (http://dev.mysql.com/doc/refman/5.1/en/innodb-auto-increment-handling.html) هم به نظر جالب می رسه ولی کامل نخوندمش.

و این (http://stackoverflow.com/questions/2787910/why-does-mysql-autoincrement-increase-on-failed-inserts).

من معتقدم MySQL تحت شرایطی reuse می کند از آی دی های درج شده و حالا پاک شده.

بنابراین همین موضوع گارانتی نمی کند که هر رکوردی که بعد از رکورد دیگری درج شده است آی دی AUTO_INCREMENT اش بزرگتر از دیگری باشد.

mmodhejavi
چهارشنبه 15 مرداد 1393, 07:26 صبح
با سلام
این کویری محتویات جدول رو برعکس مرتب میکنه و بعد مثلا 5 رکورد اول رو واکشی میکنه .خیلی راحت و ساده.

select top 5 * from table order by id desc

miladamirzadeh
چهارشنبه 15 مرداد 1393, 08:23 صبح
با سلام
این کویری محتویات جدول رو برعکس مرتب میکنه و بعد مثلا 5 رکورد اول رو واکشی میکنه .خیلی راحت و ساده.

select top 5 * from table order by id desc
فکر می کنم SELECT TOP مخصوص SQL Server هست.