نمایش نتایج 1 تا 9 از 9

نام تاپیک: گرفتن max یه ستون

  1. #1
    کاربر دائمی آواتار mehrsa_fr
    تاریخ عضویت
    دی 1388
    محل زندگی
    تهران
    سن
    33
    پست
    168

    گرفتن max یه ستون

    من میخوام تو select آخرین نفری که اضافه شده رو نشون بده ولی با این دستورم بهم ارور میده

    select
    TLname,TName from Account whereMAX(ID)

    نمیدونم درست توضیح دادم یا نه

  2. #2

    نقل قول: گرفتن max یه ستون

    سلام.شما اینجوری باید بنویسید.

    select TLname,TName,max(id) from Account

    موفق باشید

  3. #3
    کاربر دائمی آواتار mehrsa_fr
    تاریخ عضویت
    دی 1388
    محل زندگی
    تهران
    سن
    33
    پست
    168

    نقل قول: گرفتن max یه ستون

    به من یه همچین اروری میدهColumn 'TLname' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

  4. #4

    نقل قول: گرفتن max یه ستون

    شما اول بايد Max رو بدست بياريد بعد ميتونيد توي دستور نمايش بديد
    Declare @Max bigint
    Select @Max = Max(ID) from Account
    Select TLname, TName, @Max as MaxID from Account

    اين دستور كنار تمام نام ها بزرگترين ID رو نمايش ميده.
    ولي اگر ميخوايد به ازا هر نام بزرگترين ID اون نام رو داشته باشيد به صورت زير ميتونيد اين كار رو انجام بديد
    Select TLname, TName,  Max(ID) as MaxID from Account Group by TLname, TName

  5. #5

    نقل قول: گرفتن max یه ستون

    نقل قول نوشته شده توسط mehrsa_fr مشاهده تاپیک
    به من یه همچین اروری میدهColumn 'TLname' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

    سلام،
    SELECT *
    FROM TABLE2
    WHERE ID = (SELECT Last(ID) FROM TABLE2);

    کد بالا آخرین رکورد وارد شده رو بر می گردونه صرفنظر از اینکه ID بزرگترین هست یا نه اما کد پایین رکوردی رو که ID اون ماکزیمم هست رو بدون توجه به اینکه کدوم رکورد آخرین بار وارد شده بر می گردونه:
    SELECT *
    FROM TABLE2
    WHERE ID = (SELECT Max(ID) FROM TABLE2);

    .Ideas are everything, Microsoft Corporation
    آخرین ویرایش به وسیله tooraj_azizi_1035 : چهارشنبه 21 مهر 1389 در 09:43 صبح

  6. #6

    نقل قول: گرفتن max یه ستون

    نقل قول نوشته شده توسط mehrsa_fr مشاهده تاپیک
    با تشکر از پاسخ ها
    ببینید من یه Autonumber دارم به نام Id که هر وقت فردی اضافه میشه id یه دونه میره بالا حالا من میخوام فقط آخرین نفری که اضافه شده نام و نام خانوادگیشو ببینم
    سلام تو پست قبلی هر دو کد SQL برای شما جواب می ده چون هر رکوردی که به جدول شما اضافه می شه ID اون حتماً بزرگترین هست و اون رکورد حتماً آخرین رکورد وارد شده هست (چون AutoNumber گارانتی می کنه که آخرین رکورد Maximum ID رو داره).

  7. #7

    نقل قول: گرفتن max یه ستون

    این کد دستور هم بد نیست :
    SELECT     TOP 1 *
    FROM Table1
    ORDER BY ID DESC

  8. #8

    نقل قول: گرفتن max یه ستون

    قبل هر چيز معذرت ميخوام من اصلا سوال رو نخوندم و متن خطايي كه گفته بوديد رو نگاه كردم!!
    SELECT     TOP 1 * FROM   Table1 ORDER BY ID DESC

    به هيچ وجه اين روش توصيه نميشه چون عمليات مرتب سازي سربار بسيار زيادي نسبت به يك جستجو داره.
    روش دوستمون tooraj_azizi_1035 هم درسته كه كار ميكنه ولي چون به ازا هر ركورد يك محاسبه MAXداريم يه ذره سربار داره.
    روش پيشنهادي من به اين صورت
    Declare @Max bigint
    Select @Max = Max(ID) from Account
    Select * from Account ID = @MAX

  9. #9

    نقل قول: گرفتن max یه ستون

    نقل قول نوشته شده توسط Reza_Yarahmadi مشاهده تاپیک
    قبل هر چيز معذرت ميخوام من اصلا سوال رو نخوندم و متن خطايي كه گفته بوديد رو نگاه كردم!!
    SELECT     TOP 1 * FROM   Table1 ORDER BY ID DESC

    به هيچ وجه اين روش توصيه نميشه چون عمليات مرتب سازي سربار بسيار زيادي نسبت به يك جستجو داره.
    روش دوستمون tooraj_azizi_1035 هم درسته كه كار ميكنه ولي چون به ازا هر ركورد يك محاسبه MAXداريم يه ذره سربار داره.
    روش پيشنهادي من به اين صورت
    Declare @Max bigint
    Select @Max = Max(ID) from Account
    Select * from Account ID = @MAX
    سلام،
    دوست عزیز فکر نمی کنم که موتور SQL Server وقتی رکوردهایی رو می خواد از یه جدول انتخاب کنه به ازاء هر رکورد محاسبات موجود در قسمت WHERE رو انجام بده چون این قسمت حتی می تونه قبل از خود SELECT پردازش بشه چون وابستگی به اون نداره در حالی که SELECT به مقدار موجود در WHERE وابستگی داره و موتور Query Optimizer اون دو رو نمی تونه به صورت Parallel اجرا کنه. در ضمن کد من دارای دو SELECT و کد شما هم دارای دو کد SELECT هست که با هم برابرند. امیدوارم واضح گفته باشم.

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •