سؤال

لدي مجموعة PHP مع أرقام المعرف فيها. تم طلب هذه الأرقام بالفعل.

الآن أود الحصول على نثرتي عبر الأسلوب في ()، للحصول على كل المعرف.

ومع ذلك، يجب طلب هذه المعرف مثل في الطريقة في الطريقة.

علي سبيل المثال:

IN(4,7,3,8,9)  

يجب أن تعطي نتيجة مثل:

4 - Article 4  
7 - Article 7  
3 - Article 3  
8 - Article 8  
9 - Article 9

أي اقتراحات؟ ربما هناك وظيفة للقيام بذلك؟

شكرًا!

هل كانت مفيدة؟

المحلول

أعتقد أنك قد تبحث عن وظيفة ميدان - بينما يعتقد عادة كدالة سلسلة، فإنه يعمل بشكل جيد للأرقام أيضا!

ORDER BY FIELD(field_name, 3,2,5,7,8,1)

نصائح أخرى

يمكنك استخدام FIELD():

ORDER BY FIELD(id, 3,2,5,7,8,1)

إرجاع الفهرس (موضع) STR في قائمة STR1، STR2، STR3، ... إرجاع 0 إذا لم يتم العثور على شارع.

إنه نوع من الاختراق القبيح، لذلك حقا استخدامه فقط إذا لم يكن لديك خيار آخر. قد يكون فرز الإخراج في تطبيقك أفضل.

لا تقدم SQL القياسي طريقة للقيام بذلك (MySQL May، لكنني أفضل الحلول المحايدة للبائع حتى أتمكن من تبديل DBMS "في أي وقت).

هذا شيء يجب أن تفعله في ما بعد المعالجة بعد يتم إرجاع مجموعة النتائج. يمكن ل SQL إرجاعها فقط بالترتيب المحدد في جملة "الترتيب حسب" (أو في أي طلب إذا لم يكن هناك بند مثل هذا).

الاحتمال الآخر (على الرغم من أنني لا أحب ذلك، فأنا شخصي مرتبط بإعطائك الاختيار) هو جعل رحلات متعددة إلى قاعدة البيانات، واحدة لكل معرف، ومعالجةها لأنها تأتي في:

select * from tbl where article_id = 4;
// Process those.
select * from tbl where article_id = 7;
// Process those.
: : : : :
select * from tbl where article_id = 9;
// Process those.

ستحتاج فقط إلى تقديم الطلب الصحيح حسب العبارة.

SELECT ID FROM myTable WHERE ID IN(1,2,3,4) ORDER BY ID

لماذا تريد الحصول على طلب بياناتك غير مرتبة كما في مثالك؟

إذا كنت لا تمانع في استسلام الاستفسارات الطويلة، فجرب بهذه الطريقة:

SELECT ID FROM myTable WHERE ID=1
UNION
SELECT ID FROM myTable WHERE ID=3
UNION
SELECT ID FROM myTable WHERE ID=2
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top