2013-04-06 35 views
0

我有一個列表,如id和名稱的MySQL表。我只想在一個變量中使用一個值,有時是id,有時候是名字。我如何檢查兩列中的值?在兩列中檢查數據庫中的值

我已經試過這樣的事情:

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

變量名是一樣的,所以我有兩列檢查。

+0

您使用像Java,PHP這些編程語言? – 2013-04-06 08:09:54

+0

java .................. – Chandrakesh 2013-04-06 08:12:07

+0

在調用mysql之前,你在java中是否有名稱/ id變量,你是以編程方式創建sql字符串嗎?一個字的答案是有限的使用。 – 2013-04-06 08:23:54

回答

0

您可能需要使用你應該只能夠添加在你SELECT條款你想的價值觀LIKE代替=

+0

沒有不正常工作.... – Chandrakesh 2013-04-06 07:56:43

+0

查詢本身很好(只要您正確使用引號)。你期待什麼行爲?它應該返回'id'或'name'列中具有'name'的行數。你在找什麼? – 2013-04-06 07:59:13

+0

我只是想知道這個名字和ID是否存在於表或沒有在這種情況下 – Chandrakesh 2013-04-06 08:07:55

0

試試這個:

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

不工作..... – Chandrakesh 2013-04-06 07:54:31

+1

問題是我們不知道你真正想要的,以上是用於查找名稱列與名稱完全相同或id列完全等於名稱的行數的正確SQL。 – 2013-04-06 08:18:34

+0

@ user1891823上面的SQL查詢是針對你的問題的答案.... – 2013-04-06 08:25:32

0

什麼是ID的數據類型。如果它是一個int,那麼你不需要id周圍的單引號。你的聲明中也不需要括號。如果此語句位於Java程序中,則必須用雙引號將所有內容括起來。

傑森斷定

在你檢查名稱的情況下
+0

id是int only ...... – Chandrakesh 2013-04-06 07:50:51

+0

plz給我舉個例子...... – Chandrakesh 2013-04-06 07:55:00

+0

@ user1891823:如果'id'是int,那麼你如何能匹配'name'字段?你的問題沒有明確的含義... – 2013-04-06 08:29:19

0

你想這樣的:

select count(*) from topic where (name= '"+ name + "'); 
在你檢查ID的情況下

你想這樣的:

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

那麼你想使用「的情況下,當聲明」,例如: 首先定義

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); 

我建議你的名字變量重命名爲類似VAL

+0

在相同的變量有時我得到的名字,有時得到身份證。我沒有得到你的例子... – Chandrakesh 2013-04-06 08:00:34

+0

確定,但你知道你在得到什麼嗎?如果不是那麼我們怎麼知道...什麼是模式 - 可能有人的名字是12345 - 我們需要更多的信息 – 2013-04-06 08:11:56

+0

SQL需要被告知是否在名稱或ID的情況下,你不能只是有一個變量保持要麼計算機工作出來..必須有一些邏輯,這就是我的意思是通過設置column_to_match ...取決於你的場景 – 2013-04-06 08:14:37