MySQL Ограничение запроса одним постоянным значением - PullRequest
0 голосов
/ 15 июня 2010

Мой текущий запрос возвращает таблицу вроде:

+------------+
value1 | ....
value1 | ....
value2 | ....
value3 | ....
+------------+

Я хочу:

+------------+
value1 | ....
value1 | ....
+------------+

Я хочу получить только все строки с первым значением. Обычно я выполняю предложение WHERE, если знаю это значение, и не могу использовать LIMIT, потому что каждое значение имеет разное количество строк.

Прямо сейчас Мой запрос выглядит так:

SELECT u.*, n.something, w.* 
  FROM ... AS u, ... AS n, ... AS w 
 WHERE u.id = n.id 
   AND w.val = n.val 
   AND u.desc LIKE '%GET REQUEST VARIABLE%'

Это прекрасно работает, за исключением того, что я получаю слишком много строк и использую PHP, чтобы разрушить переносимость кода и является излишним.

1 Ответ

3 голосов
/ 15 июня 2010

Не уверен, но я думаю, что вы могли бы получить это с помощью:

SELECT u.*, n.something, w.*
FROM ... AS u
JOIN ... AS n ON u.id = n.id
JOIN ... AS w ON w.val = n.val
JOIN (
  SELECT col
  FROM ... AS u2
  WHERE u2.desc LIKE ?
  LIMIT 1
) AS u2 ON u2.col = u.col

, где ... во внутренней SELECT - это та же таблица с псевдонимом u ранее.

РЕДАКТИРОВАТЬ: Еще одна вещь: я предположил, col отличается для разных значений desc;если нет, вам придется повторить WHERE и во внешнем SELECT.

(Если вы не знакомы с подготовленными утверждениями, то ? - это то, куда должен идти ваш '%...%'.... и не забудьте убежать от Bobby Tables ; если вы, конечно, библиотека сделает это за вас :))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...