Выбор SQL - вы можете сопоставить одну строку с двумя столбцами? - PullRequest
1 голос
/ 27 января 2012

Я использую postgres, и у меня есть таблица "users", которая содержит имена и фамилии пользователей:

id | first_name | last_name | ... 
-----------------------------------
 1 | daniel     | johnston  |
 2 | jane       | austin    |

Я хотел бы использовать набор выбранных пользователей на основе одной строки (в соответствии с началом как first_name, так и last_name. Поэтому, если я ищу «j», обе записи возвращаются. "jo", будет возвращена только первая запись.

Есть ли эффективный способ сделать этот запрос в postgres, используя только SQL? Или мне придется сделать несколько вызовов для выбора и затем отформатировать результаты, используя другой язык программирования?

Спасибо!

1 Ответ

2 голосов
/ 27 января 2012

Почему бы просто не использовать оператор OR.

например,

SELECT id, first_name, last_name 
FROM users 
WHERE (first_name LIKE 'jo%' OR last_name like 'jo%')

Если first_name или last_name начинаются с 'jo', то строка будет возвращена.

Что касается эффективности, этот тип 'запускаетсяс 'query может использовать индекс, однако в зависимости от того, как вы собираетесь запрашивать, вам может быть лучше использовать полнотекстовый индекс - особенно если вы собираетесь использовать подстановочный знак с обеих сторон строки (например, LIKE'% jo%'.) Более подробную информацию можно найти здесь: http://wiki.postgresql.org/wiki/Full_Text_Indexing_with_PostgreSQL

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