تخطَّ إلى المحتوى

WHERE

تصفية الصفوف بشرط WHERE

WHERE يحدّد أي صفوف يشملها الاستعلام قبل أي تجميع، عبر شرط منطقي يُقيَّم لكل صف على حدة.

WHERE يصفّي الصفوف الخام قبل تنفيذ أي تجميع (GROUP BY) — أي أنه يعمل على مستوى الصف الواحد لا المجموعة. يدعم عوامل المقارنة العادية، وربط شروط متعددة بـ AND وOR وNOT، ونطاقات بـ BETWEEN، وقوائم بـ IN، وتطابق نصي جزئي بـ LIKE.

يختلف عن HAVING الذي يصفّي بعد التجميع على مستوى المجموعات لا الصفوف الفردية — القاعدة العملية: WHERE قبل GROUP BY، وHAVING بعده.

الصياغة

SELECT columns FROM table WHERE condition;

📄 مثال

SELECT name, price
FROM products
WHERE price BETWEEN 50 AND 200
  AND category = 'electronics';

أهم النقاط

النقطةالوظيفة
= <> > < >= <=عوامل المقارنة الأساسية بين عمود وقيمة
AND / OR / NOTدمج أو نفي عدّة شروط في جملة واحدة
BETWEEN ... ANDنطاق قيم شامل الطرفين
IN (...)تطابق مع أي قيمة من قائمة محدّدة
IS NULL / IS NOT NULLفحص القيم الفارغة — لا يعمل معها عامل =

💡 نصائح عملية

  • استخدم أقواسًا صريحة عند خلط AND مع OR — الأولوية الافتراضية لـ AND قد تُنتج نتيجة غير متوقّعة
  • IN مع قائمة قصيرة أوضح وأحيانًا أسرع من سلسلة طويلة من OR

⚠️ أخطاء شائعة

  • استخدام column = NULL بدل IS NULL — NULL لا يساوي أي شيء حتى نفسه فتُرجع النتيجة فارغة دائمًا
  • وضع منطق يحتاج نتيجة مجموعة (مثل COUNT(*) > 5) في WHERE بدل HAVING

خصائص ذات صلة

🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار SQL الكامل بالعربي.