как узнать набор результатов по какому столбцу? если мы напишем 3 столбца в предложении where с операторами OR в одной таблице - PullRequest
0 голосов
/ 12 октября 2019

У меня есть таблица базы данных. Эта таблица имеет 4 столбца. В 3 столбцах члены (значения) хотят получить доступ к значению 4-го столбца.

Так что здесь я не хочу писать один и тот же запрос для каждого члена. Я хочу написать только один запрос. Так возможно ли с одним запросом? Если возможно, как я могу узнать, какой столбец дал эти результаты?

select 4thcolumn from tablename where lstcolumn=?1 or 2ndcolumn=?2 or 3rdcolumn=?3;

1 Ответ

0 голосов
/ 12 октября 2019

Использование OR является решением (но для этого необходимо повторить параметр три раза):

SELECT col4 FROM mytable col1 =:myvalue OR col2 =:myvalue OR col3 = :myvalue;

Одним из решений для сокращения запроса (и передачи уникального параметра) является использование IN:

SELECT col4 FROM mytable WHERE :myvalue IN (col1, col2, col3)

Если вы хотите узнать, какой столбец соответствует, то это будет длиннее. В MySQL вы можете сделать:

SELECT 
    col4,
    col1 = :myvalue is_col1,
    col2 = :myvalue is_col2,
    col3 = :myvalue is_col3 
FROM mytable 
WHERE :myvalue IN (col1, col2, col3)

Это добавит три столбца в набор результатов: is_col1, is_col2, is_col3;столбцы, которые соответствуют, будут иметь значение 1, другие будут отображаться 0.

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