2015-02-25 2 views
-1

, пожалуйста, помогите мне с запросом mysql.Я хочу получить определенные согласованные записи из mysql, используя php

id  name  manual_id 
------------------------------ 
1  windows 1,2 
2  apple  1 
3  linux  11,2 

Рассмотрите таблицу выше. Я хочу получить только записи, которые содержат 1 , поэтому в соответствии с приведенной выше таблицей он должен извлекать только идентификаторы 1 и 2, содержащие «1». в результате этого не должно получиться 11. Я пробовал использовать LIKE, но он также выбирает manual_id 11. Дайте мне точный способ получить эту запись.

Заранее спасибо.

+1

Используйте 'IN() или' FIND_IN_SET() 'функции. –

+0

Мне это очень не помогло. он нашел только частично. Благодарю за ответ :) – user3752006

+1

Добро пожаловать. Кстати, вы публикуете много вопросов, но не принимаете их. Посетите и прочитайте http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work, затем вернитесь ко всем вопросам и ответам, которые решили ваши вопросы, и сделайте то же, что указано в ссылке Я предоставил. Давайте сохраним Stack, насколько это возможно. –

ответ

1

Используйте следующий запрос

SELECT * FROM `users` 
WHERE 
    manual_id LIKE '%,1,%' OR 
    manual_id LIKE '1,%' 
    OR manual_id LIKE '%,1' OR 
IF(manual_id = '1' AND CHAR_LENGTH(manual_id) = 1, true,'Invalid record') 

Объяснение: Здесь он будет искать записи с ручной ид '% 1,%' LIKE означает Запятая после и до 1. Он также будет проверять «1,%», это будет 1-й номер в этом поле. Он будет проверять, что «%, 1» тоже означает последний 1. Последнее, если условие IF -> есть 1 только в записи.

Working SQLFiddle

+0

Большое спасибо! Это помогло мне и получило точный результат. – user3752006

+0

Привет, если решение решает ваш вопрос, то вы можете возвысить, принять ответ, спасибо. –

+0

Я пробовал это до двух дней, но моей репутации было не 15, поэтому я не мог продвинуться. Теперь у меня есть точные 15 очков, поэтому я могу сейчас повернуть;) – user3752006

1

Применение IN

SELECT * from `table` 
WHERE `manual_id` IN (1); 
+0

Первый ответ с использованием 'IN()' через 12 минут. * Hey Sam! * –

+0

Я делал красивые вещи для пространственных данных. * Привет Ральф! * –

+0

В комплекте с шарами-динго вокруг окон и тире тоже? –

0
SELECT * from `table` 
WHERE FIND_IN_SET('1',`manual_id`) 
Смежные вопросы