MySQL получает имена столбцов из результатов поиска - PullRequest
1 голос
/ 10 июля 2011

Если я запускаю что-то вроде этого:

SELECT * FROM my_table WHERE a = 'foo' OR b = 'foo' OR c = 'foo'

Я хотел бы знать, был ли 'foo' в столбце a, b, c или "a и b" и т. Д.!

Есть ли способ сделать это в MySQL ??

Ответы [ 4 ]

3 голосов
/ 10 июля 2011

вы можете использовать CONCAT_WS и IF , чтобы показать в одном столбце основанные столбцы, разделенные запятой

SELECT *,
CONCAT_WS(',',(IF(a = 'foo','a',NULL)) ,(IF( b = 'foo','b',NULL)) ,(IF(c = 'foo','c',NULL)))
AS WhereFound
FROM my_table WHERE a = 'foo' OR b = 'foo' OR c = 'foo'
0 голосов
/ 10 июля 2011

Предположим, вы не хотите, чтобы они были объединены, что-то вроде этого может дать вам то, что вы хотите

SELECT IF(a = 'foo', 'Yes','No') AS Was_In_A,
IF(b = 'foo', 'Yes','No') AS  Was_In_B,
IF(c = 'foo', 'Yes','No') AS Was_In_C
FROM my_table WHERE a = 'foo' OR b = 'foo' OR c = 'foo'
0 голосов
/ 10 июля 2011

Вы всегда можете проверить значения a, b и c в выбранных результатах, но, возможно, это облегчит задачу?

SELECT (a = 'foo') as FooInA, (b = 'foo') as FooInB, 
       (a = 'foo') AND (b = 'foo') as FooInAandB 
FROM my_table WHERE a = 'foo' OR b = 'foo' OR c = 'foo'
0 голосов
/ 10 июля 2011

Используя все, что вы используете для базы данных, вы должны иметь возможность поместить результат этого запроса в массив, он будет выглядеть так:

$row['a']
$row['b']
$row['c']

После этого вы можете использовать функцию php in_array , чтобы увидеть, в каких столбцах был foo.

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