سؤال

هل يمكن لأحد أن يعطيني استعلامًا سيعود كمعرف الصفوف 1 و 3؟

ID Name Hidden 
1 Mika 1,4,2 
2 Loca 0 
3 Nosta 4 
4 Like 2 

شيء من هذا القبيل حدد * من الجدول حيث يخفي (4)

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

المحلول

SELECT * FROM table WHERE FIND_IN_SET('4',Hidden);

مستندات ل find_in_set

نصائح أخرى

SELECT * FROM table WHERE CONCAT(',',Hidden,',') LIKE '%,4,%'

أو يمكنك تجنب استخدام مثل هذا

SELECT * FROM table WHERE INSTR(CONCAT(',',Hidden,','), ',4,') > 0

لن يحصل هذا على أشياء مثل 40 ، 14 ، إلخ ، ولكن عليك التأكد من عدم وجود مسافات في الحقل المخفي (على سبيل المثال ، 1, 4, 5 أو تحديث المسلسل ومثل الوظيفة وفقًا لذلك.

SELECT * FROM table WHERE Hidden LIKE '%4%'

٪ هي البطاقات البرية.

البحث عن النص الكامل قد يكون حلاً معقولًا لهذا الطول طالما أنك تستخدم فواصل الكلمة الصحيحة.

إما الذهاب مع البحث النص الكامل ، كما هو مقترح ، أو

قم بتدوير القيم المخفية إلى جدول منفصل ، مع معرف الصف الحالي.

على سبيل المثال ، سيكون لدى ميكا ثلاثة إدخالات في هذا الجدول

معرف = 1 ، مخفي = 1
معرف = 1 ، مخفي = 4
معرف = 1 ، مخفي = 2

ثم يمكنك إرجاع النتائج مقابل هذا الدوران خارج الطاولة.

قد ترغب أيضًا في التفكير في تطبيع الجدول وتخزين هذه القيم "المخفية" في جدول منفصل مع فهرس على العمود المناسب. اعتمادًا على عدد الصفوف التي لديك والتي ستكون أسرع بكثير:

ID Hidden
1  1
1  4
1  2 
3  4 
4  2 

و:

SELECT DISTINCT table.* FROM table, hidden_table WHERE table.ID = hidden_table.ID AND hidden_table.hidden = 4
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top