با استفاده از تابع FIELD در MySQL، جدول products را طوری نمایش دهید که یک ستون priority حاوی موقعیت رنگ هر محصول در لیست اولویت ['red','blue','green','yellow'] باشد و ردیف‌ها بر اساس این اولویت مرتب شوند به طوری که رنگ‌های ناشناخته در انتها قرار گیرند؟

1.0 بازدید آخرین ویرایش در 221 روز قبل ساعت 01:35

0.0

از تابع سیستم FIELD برای پیدا کردن ایندکس مقدار رنگ در لیست استفاده کنید: SELECT *, FIELD(color,'red','blue','green','yellow') AS priority FROM products. چون FIELD مقدار 0 برای مقادیر موجود در لیست بر نمی‌گرداند، برای قرار دادن رنگ‌های ناشناخته در انتها می‌توانید ابتدا بر حسب (FIELD(...)=0) و سپس بر حسب FIELD(...) مرتب کنید، یا مقدار 0 را به NULL تبدیل کنید تا در ORDER BY انتهای نتایج قرار گیرند. این پرس‌وجو را در محیط MySQL (CLI یا هر کلاینت) اجرا کنید و دقت کنید که حساسیت به حروف بزرگ/کوچک به تنظیمات collation بستگی دارد.

توسط پژوهشگر در 221 روز قبل ساعت 01:35
دسته بندی ها: MySQL MySQL for beginner
arman در 221 روز قبل ساعت 12:43

با استفاده از FIELD(color,'red','blue','green','yellow') می‌توانید ستون priority را بسازید که موقعیت هر رنگ در لیست را مشخص کند. برای اینکه رنگ‌های ناشناخته در انتهای نتایج بیایند، می‌توانید ابتدا مرتب‌سازی را با (FIELD(color,'red','blue','green','yellow') = 0) ASC انجام دهید و سپس بر اساس FIELD(... ) ASC مرتب کنید. همچنین می‌توانید 0 را به NULL تبدیل کنید تا در ORDER BY در انتهای نتایج قرار گیرند. به یاد داشته باشید که حساسیت حروف بستگی به Collation دارد و ممکن است لازم باشد از LOWER(color) یا COLLATE مناسب استفاده کنید.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری