2013-04-06 2 views
0

У меня есть таблица MySQL с такими столбцами, как id и name. Я просто хочу взять значение в переменной иногда id и иногда назвать. Как проверить значение в двух столбцах?Проверка значения в базе данных в двух столбцах

Я пытался что-то вроде этого:

select count(*) from topic where (name= '"+ name + "' or id='"+name+"') 

имени переменного то же самое, так что я должен проверить в двух столбцах.

+0

который программирующий язык, который вы использовали, как Java, PHP? –

+0

java .................. – Chandrakesh

+0

У вас есть переменная name/id в java перед вызовом mysql, вы произвольно создаете строки sql? ответы на одно слово имеют ограниченное использование. –

ответ

0

Вы можете использовать LIKE вместо =

+0

нет не работает .... – Chandrakesh

+0

сам запрос в порядке (при условии правильного использования кавычек). Какое поведение вы ожидаете? Он должен возвращать количество строк, которые имеют 'имя' в' id' или 'name'column. Что вы получаете вместо этого? –

+0

Я просто хочу узнать, присутствует ли это имя и идентификатор в таблице или нет – Chandrakesh

0

Вы просто должны иметь возможность добавлять значения, которые вы хотели бы в вашей статье SELECT.

Попробуйте это:

SELECT COUNT(1) count, name, id 
FROM topic 
WHERE (name= '"+ name + "' or id='"+name+"') 
+0

не работает ..... – Chandrakesh

+1

проблема в том, что мы не знаем, что вы действительно хотите , вышесказанное является правильным SQL для нахождения количества строк, где либо столбец имен точно равен имени, либо столбец id точно равен имени. –

+0

@ user1891823 приведенный выше SQL-запрос является ответом на ваш вопрос .... –

0

Какой тип данных ID. Если это int, вам не нужны одиночные кавычки вокруг id. Также вам не нужны скобки в вашем заявлении. И вы должны заключить все в двойные кавычки, если этот оператор находится внутри программы Java.

Джейсон Posit

+0

id is int only ...... – Chandrakesh

+0

Plz дайте мне пример .... – Chandrakesh

+0

@ user1891823: if 'id' is int, тогда как можно совместить с полем' name' string? Ваш вопрос не имеет четкого смысла ... –

0

в случае, если вы проверка на имя, которое вы хотите:

select count(*) from topic where (name= '"+ name + "'); 

в случае, если вы для проверки идентификатора вы хотите:

select count(*) from topic where (id= '"+ name + "'); 

то вы хотите использовать оператор «case when statement» следующим образом: сначала определить

column_to_match to be = 'name' or = 'id' depending on your scenario 

затем

select count(*) from topic where (case column_to_match when 'name' then name= '"+ name + "' when 'id' then id= '"+ name + "' end case); 

я рекомендую переименовать переменную имя на что-то вроде Валу

+0

в той же переменной иногда я получаю имя и иногда получаю id. Я не получил ур пример ... – Chandrakesh

+0

нормально, но знаете ли вы, что получаете? если нет, то как мы должны знать ... что такое схема - может ли кто-то имя быть 12345 - нам нужно больше информации –

+0

SQL должен быть указан, были ли они в случае с именем или в случае id, вы не можете просто удерживать переменную либо ожидаем, что компьютер это выполнит. Должна быть какая-то логика, и это то, что я имею в виду, установив column_to_match ... в зависимости от вашего сценария –

Смежные вопросы