এসকিউএল সার্ভারের সাথে শেষ সারিটি পড়ার সর্বাধিক দক্ষ উপায় কোনটি?
সারণিটি একটি অনন্য কীতে সূচিযুক্ত - "নীচে" কী মানগুলি সর্বশেষ সারিটি উপস্থাপন করে।
উত্তর:
আপনি যদি এমএস এসকিউএল ব্যবহার করেন তবে আপনি চেষ্টা করতে পারেন:
SELECT TOP 1 * FROM table_Name ORDER BY unique_column DESC
SELECT TOP 1000 * FROM table_name ORDER BY column_name DESCএবং শেষ 1000 রেকর্ড আউটপুট করা উচিত।
select whatever,columns,you,want from mytable
where mykey=(select max(mykey) from mytable);
mykeyআপনার টেবিল সূচক
mykeyঅনন্য পরিচয়কারী হয় তবে এই পদ্ধতির কোনও
আপনার টেবিলটিতে স্বতঃপূরণ প্রাথমিক কী বা একটি ডেটটাইম কলাম (পছন্দমতো প্রাথমিক কী) এর মতো এক ধরণের স্বতন্ত্ররূপে কলাম সনাক্ত করতে হবে। তারপরে আপনি এটি করতে পারেন:
SELECT * FROM table_name ORDER BY unique_column DESC LIMIT 1
ORDER BY columnএটা বলে যে কলামের তথ্য অনুযায়ী ফলাফল rearange, এবং DESCবলা হয়েছে যে সব ফলাফল বিপরীত (সুতরাং প্রথম গত এক নির্বাণ)। এর পরে, LIMIT 1ডায়াগুলি এটিকে কেবল এক সারি পিছনে যেতে বলে।
যদি আপনার কিছু আইডি ক্রমযুক্ত থাকে তবে আমি ধরে নিচ্ছি আপনার ডিবিতে কিছু অর্ডার থাকবে
SELECT * FROM TABLE WHERE ID = (SELECT MAX(ID) FROM TABLE)
আমি মনে করি নীচের কোয়েরিটি কোনও বাছাইযোগ্য কলাম ছাড়াই সর্বোচ্চ কার্যকারিতা সহ এসকিউএল সার্ভারের জন্য কাজ করবে
SELECT * FROM table
WHERE ID not in (SELECT TOP (SELECT COUNT(1)-1
FROM table)
ID
FROM table)
আশা করি আপনি এটি বুঝতে পেরেছেন ... :)
আমি এসকিউএল সার্ভার ২০০৮ এ শেষ স্কেল ক্যোয়ারীটি ব্যবহার করার চেষ্টা করেছি তবে এটি এই ত্রুটিটি দেয়: "'শেষ' কোনও স্বীকৃত অন্তর্নির্মিত ফাংশন নাম নয়" "
সুতরাং আমি ব্যবহার করে শেষ করেছি:
select max(WorkflowStateStatusId) from WorkflowStateStatus
শেষ সারির আইডি পেতে। একটি ব্যবহার করতে পারে
Declare @i int
set @i=1
select WorkflowStateStatusId from Workflow.WorkflowStateStatus
where WorkflowStateStatusId not in (select top (
(select count(*) from Workflow.WorkflowStateStatus) - @i ) WorkflowStateStatusId from .WorkflowStateStatus)
আপনি সর্বশেষ_মূল্যটি ব্যবহার করতে পারেন: SELECT LAST_VALUE(column) OVER (PARTITION BY column ORDER BY column)...
আমি এটি আমার ডেটাবেসগুলির একটিতে পরীক্ষা করে দেখি এবং এটি প্রত্যাশা অনুযায়ী কাজ করেছিল।
আপনি এখানে ডকুমেন্টেশনও যাচাই করতে পারেন: https : //msdn.mic Microsoft.com/en-us/library/hh231517.aspx
এমএস এসকিউএল ডাটাবেস 2005 এর জন্য একটি সারণির শেষ সারিটি পুনরুদ্ধার করতে, আপনি নিম্নলিখিত কোয়েরিটি ব্যবহার করতে পারেন:
select top 1 column_name from table_name order by column_name desc;
দ্রষ্টব্য: এমএস এসকিউএল ডাটাবেস 2005 এর জন্য সারণির প্রথম সারিটি পেতে, আপনি নিম্নলিখিত কোয়েরিটি ব্যবহার করতে পারেন:
select top 1 column_name from table_name;
select top 1অর্ডার ব্যতীত প্রথম রেকর্ড পাওয়ার কোনও নির্ভরযোগ্য উপায় নয়। আপনি যদি কোনও অর্ডার না দিয়ে থাকেন তবে আপনি এসকিউএলকে যে কোনও রেকর্ড এটি খুশি করার জন্য অনুমতি দেন।
OFFSETএবং FETCH NEXTফলাফল প্রদর্শন করার সময় এসকিউএল পেজিং অর্জনের জন্য এসকিউএল সার্ভার 2012 এর একটি বৈশিষ্ট্য।
OFFSETযুক্তি ফলাফল থেকে প্রত্যাবর্তন সারি শুরু সারি সিদ্ধান্ত নিতে ব্যবহার করা হয় এবং FETCHযুক্তি সারির সংখ্যা একটি সেট আসতে ব্যবহার করা হয়।
SELECT *
FROM table_name
ORDER BY unique_column desc
OFFSET 0 Row
FETCH NEXT 1 ROW ONLY
এভাবেই আপনি সর্বশেষ রেকর্ডটি পান এবং অ্যাক্সেস ডিবিতে কোনও ক্ষেত্র আপডেট করেন।
হালনাগাদ compalints SET tkt = addzone &'-'& customer_code &'-'& sn where sn in (select max(sn) from compalints )
আপনার যদি কোনও অর্ডারকৃত কলাম না থাকে তবে আপনি প্রতিটি লাইনের ফিজিক্যাল আইডি ব্যবহার করতে পারেন:
SELECT top 1 sys.fn_PhysLocFormatter(%%physloc%%) AS [File:Page:Slot],
T.*
FROM MyTable As T
order by sys.fn_PhysLocFormatter(%%physloc%%) DESC
আপনার যদি একটি অনুলিপিযুক্ত টেবিল থাকে, আপনি ক্লায়েন্টডেটাবেসে লোকাল ডেটাবেজে একটি পরিচয় = 1000 এবং পরিচয় = 2000 রাখতে পারেন, তাই যদি আপনি শেষ আইডিটি ধরেন তবে আপনি সর্বদা ক্লায়েন্টের কাছ থেকে সর্বশেষতম খুঁজে পেতে পারেন, বর্তমান সংযুক্ত ডাটাবেস থেকে সর্বশেষ নয়। সুতরাং সর্বোত্তম পদ্ধতি যা শেষ সংযুক্ত ডাটাবেসটি দেয়:
SELECT IDENT_CURRENT('tablename')
আচ্ছা আমি কোনও টেবিলে "শেষ মান" পাচ্ছি না, প্রতি আর্থিক উপকরণের জন্য আমি সর্বশেষ মান পাচ্ছি। এটি একই নয় তবে আমি অনুমান করি যে এটি "এখন এটি কীভাবে করা হচ্ছে" সন্ধানের জন্য অনুসন্ধান করা কিছু ক্ষেত্রে প্রাসঙ্গিক। আমি রাউনম্বার () এবং সিটিই ব্যবহার করেছি এবং তার আগে কেবল [কলাম] ডেস্কের সাহায্যে 1 এবং অর্ডার নিতে। তবে আমাদের দরকার নেই ...
আমি এসকিউএল সার্ভার 2017 ব্যবহার করছি, আমরা বিশ্বব্যাপী সমস্ত এক্সচেঞ্জগুলিতে সমস্ত টিক্স রেকর্ড করছি, আমাদের দিনে একশ 12 বিলিয়ন টিক আছে, আমরা প্রতিটি বিড সঞ্চয় করি, জিজ্ঞাসা করি এবং খণ্ডের বৈশিষ্ট্য এবং টিকের বৈশিষ্ট্যগুলি সহ (বিড, জিজ্ঞাসা, বাণিজ্য) ) প্রদত্ত যে কোনও এক্সচেঞ্জের মধ্যে।
সেই টেবিলে যে কোনও চুক্তির জন্য আমাদের বেশিরভাগ টিকিটের ডেটা রয়েছে (বেশিরভাগ পরিসংখ্যান), সর্বশেষ ব্যবসায়ের দামটি টিক টাইপ = 4 সুতরাং, যখন আমাদের ব্যবহার করা দামের "শেষ" পাওয়া দরকার:
select distinct T.contractId,
LAST_VALUE(t.Price)over(partition by t.ContractId order by created ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING)
from [dbo].[Tick] as T
where T.TickType=4
আপনি আমার ডেভ সিস্টেমে এক্সিকিউশন প্ল্যান দেখতে পাচ্ছেন এটি কার্যকরভাবে কার্যকর করে, 4 সেকেন্ডে এক্সিকিউট করে এক্সচেঞ্জ আমদানি ইটিএল টেবিলের মধ্যে ডেটা পাম্প করে, সেখানে কিছুটা লক হয়ে যাবে আমাকে হতাশ করে ... ঠিক এভাবেই লাইভ সিস্টেমগুলি কাজ করে work

SELECT * FROM TABLE WHERE ID = (SELECT MAX(ID) FROM TABLE)