با استفاده از تابع FIELD در MySQL، از جدول products نام محصول و دسته (category) را نمایش دهید و خروجی را بر اساس ترتیب دلخواه ('Electronics','Clothing','Food','Other') مرتب کنید بهطوری که دستههای نامبرده به همان ترتیب ظاهر شوند.
5.0 بازدید آخرین ویرایش در 221 روز قبل ساعت 01:15 0.0
برای این کار از SELECT همراه با FIELD استفاده کنید: مثلاً SELECT name, category, FIELD(category,'Electronics','Clothing','Food','Other') AS rank FROM products ORDER BY rank; تابع FIELD موقعیت مقدار در لیست را برمیگرداند (مقدارهای ناموجود صفر برمیگردانند)، بنابراین میتوانید از مقدار بازگشتی برای مرتبسازی سفارشی استفاده کرده و در صورت نیاز با COALESCE یا CASE مقادیر غیرموجود را در انتها قرار دهید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
تکنیک FIELD برای تعیین ترتیب سفارشی خوب است اما مراقب مقادیر غیر درونلیستی باشید؛ FIELD هر مقدار غیرموجود را 0 برمیگرداند که ممکن است قبل از مقادیر معتبر مرتب شود. برای اطمینان از اینکه دستههای ناموجود در انتها بیایند، از شرطی مانند CASE WHEN FIELD(category,'Electronics','Clothing','Food','Other') = 0 THEN 999 ELSE FIELD(category,'Electronics','Clothing','Food','Other') END در ORDER BY استفاده کنید. همچنین میتوانید با COALESCE یا CASE، مقادیر گمشده را به یک دستهی مشخص مانند 'Other' یکپارچه کنید. این کار نتیجهای قابل پیشبینیتر و مرتبسازی مطمئنتری ارائه میدهد.
گزارش