Мне нужно было найти SQL-запрос, который возвращает строки, удовлетворяющие нескольким условиям. В этой статье описывается, что мне нужно было сделать, и решение: http://thenoyes.com/littlenoise/?p=58Полный набор в SQL
В принципе, он использует битную операцию, чтобы выяснить, существует ли указанная строка .. но мне нелегко следить за тем, как она работает.
SET @q = 'A,B';
SELECT studentName
FROM quizAnswers
GROUP BY studentName
HAVING
BIT_OR(1 << FIND_IN_SET(question, @q) - 1)
=
(1 << LENGTH(@q) - LENGTH(REPLACE(@q, ',', '')) + 1) - 1; -- This is 2^numValues - 1
+-------------+
| studentName |
+-------------+
| seekwill |
+-------------+
Я тестировал его, и он работает должным образом. Может кто-нибудь объяснить, как это работает?
Спасибо, Amie
Я предлагаю вам скопировать и вставить фрагмент кода, на который вы ссылаетесь, с этого сайта, вставить его в свой вопрос и пометить его как «Кто-нибудь может объяснить, как это работает» –
Несомненно. предложение. – Grnbeagle