2012-05-08 10 views
9

मैं मूल रूप से "लक्ष्य" बार बनाने की कोशिश कर रहा हूं। लक्ष्य एक MySQL तालिका में बनाई गई अंतिम प्रविष्टि प्राप्त करके निर्धारित किया जाता है। इसलिए मैं अंतिम प्रविष्टि की आईडी प्राप्त करना चाहता हूं।एक MySQL तालिका में अंतिम प्रविष्टि प्राप्त करें

मुझे तालिका में अंतिम प्रविष्टि कैसे प्राप्त करें और फिर उस अंतिम प्रविष्टि से आईडी प्राप्त करें?

(का उपयोग करते हुए PHP)

+0

क्या आपके पास एक ऑटो incrementing फ़ील्ड है जैसे 'id'? –

+0

आपको यह सुनिश्चित करने के लिए एक टाइमस्टैम्प रिकॉर्ड करने की आवश्यकता है कि आपको सबसे हालिया प्रविष्टि मिल रही है। –

+0

@MichaelMior, बिलकुल नहीं! इस गारंटी के लिए रिज़ॉल्यूशन के पास टाइमस्टैम्प के पास कहीं भी नहीं है। – Brad

उत्तर

25

उपयोग कर सकते हैं सबसे बड़ी आईडी प्राप्त करने के लिए है:

:

SELECT MAX(id) FROM mytable 

तब पंक्ति पाने के लिए

SELECT * FROM mytable WHERE id = ??? 

या, आप इसे एक प्रश्न में कर सकते हैं:

SELECT * FROM mytable ORDER BY id DESC LIMIT 1 
+0

धन्यवाद! मुझे लगता है कि दूसरे इसे थोड़ा और जटिल बना रहे थे, फिर यह होना जरूरी था। मुझे लगता है कि मेरा सवाल बेहतर हो सकता था। मुझे बस सबसे बड़ी आईडी चाहिए। धन्यवाद! – ComputerLocus

2

यदि क्षेत्र ऑटो वृद्धि की जाती है तो आप LAST_INSERT_ID

+0

यह मानता है कि आपने अभी पंक्ति डाली है। –

6

आप के रूप में इस उदाहरण में प्रयुक्त इस क्वेरी का उपयोग कर सकते परिणाम इस एसक्यूएल क्वेरी के साथ आप चाहते हैं पाने के लिए:

$sql = "SELECT user_id FROM my_users_table ORDER BY user_id DESC LIMIT 0,1"; 
+0

धन्यवाद, लेकिन मैं एरिक का उपयोग करूंगा, भले ही यह संभवतः काम करेगा! – ComputerLocus

+0

यह ठीक है, दोस्त। मुझे उम्मीद है कि इस धागे ने आपकी समस्या को ठीक से हल किया है =) – dotTutorials

2

मज़बूती से ऐसा करने के लिए, आप कुछ क्षेत्र तालिका में होना आवश्यक है कि आप कर सकते हैं यह निर्धारित करने के लिए जांचें कि कौन सा अंतिम है। जब आप रिकॉर्ड जोड़ते हैं, तो यह एक समय सीमा हो सकती है, जो लगातार बढ़ता है (विशेष रूप से एक ऑटो-वृद्धि अनुक्रम संख्या), आदि

फिर मान लीजिए कि यह "rec_seq" नामक एक अनुक्रम संख्या है। आप कुछ लिखेंगे जैसे:

select * from my_table 
where rec_seq=(select max(rec_seq) from my_table) 
+0

एरिक के जवाब की तरह दिखता है लेकिन मुझे एरिक का जवाब लेना होगा! – ComputerLocus

+0

कोई समस्या नहीं, वह थोड़ा आसान है, यह आसान समाधान है। – Jay

7

आप LAST_INSERT_ID() फ़ंक्शन का उपयोग कर सकते हैं। उदाहरण:

$sql = "SELECT * FROM mytable WHERE id = LAST_INSERT_ID()"; 
+0

धन्यवाद, हालांकि मैं एक एरिक का जवाब दूंगा लेकिन ऐसा लगता है कि यह भी काम करेगा! – ComputerLocus

+3

LAST_INSERT_ID के बारे में नोट करें: LAST_INSERT_ID वर्तमान कनेक्शन द्वारा डाली गई अंतिम पंक्ति की आईडी देता है, न कि अन्य। – laltin

2

उलटे क्रम में मेज से सभी क्षेत्रों और निर्धारित सीमा 0,1 यह आपको तालिका फ़ील्ड डेटा के अंतिम परिणाम

2

एक उपयोगकर्ता के नवीनतम प्रविष्टि जाओ दे देंगे चयन

'SELECT user_id FROM table_name WHERE user_id = '.$userid.' ORDER BY user_id DESC LIMIT 1'; 
संबंधित मुद्दे