我有一個列表,如id和名稱的MySQL表。我只想在一個變量中使用一個值,有時是id,有時候是名字。我如何檢查兩列中的值?在兩列中檢查數據庫中的值
我已經試過這樣的事情:
select count(*) from topic where (name= '"+ name + "' or id='"+name+"')
變量名是一樣的,所以我有兩列檢查。
我有一個列表,如id和名稱的MySQL表。我只想在一個變量中使用一個值,有時是id,有時候是名字。我如何檢查兩列中的值?在兩列中檢查數據庫中的值
我已經試過這樣的事情:
select count(*) from topic where (name= '"+ name + "' or id='"+name+"')
變量名是一樣的,所以我有兩列檢查。
您可能需要使用你應該只能夠添加在你SELECT
條款你想的價值觀LIKE
代替=
沒有不正常工作.... – Chandrakesh 2013-04-06 07:56:43
查詢本身很好(只要您正確使用引號)。你期待什麼行爲?它應該返回'id'或'name'列中具有'name'的行數。你在找什麼? – 2013-04-06 07:59:13
我只是想知道這個名字和ID是否存在於表或沒有在這種情況下 – Chandrakesh 2013-04-06 08:07:55
。
試試這個:
SELECT COUNT(1) count, name, id
FROM topic
WHERE (name= '"+ name + "' or id='"+name+"')
不工作..... – Chandrakesh 2013-04-06 07:54:31
問題是我們不知道你真正想要的,以上是用於查找名稱列與名稱完全相同或id列完全等於名稱的行數的正確SQL。 – 2013-04-06 08:18:34
@ user1891823上面的SQL查詢是針對你的問題的答案.... – 2013-04-06 08:25:32
什麼是ID的數據類型。如果它是一個int,那麼你不需要id周圍的單引號。你的聲明中也不需要括號。如果此語句位於Java程序中,則必須用雙引號將所有內容括起來。
傑森斷定
在你檢查名稱的情況下id是int only ...... – Chandrakesh 2013-04-06 07:50:51
plz給我舉個例子...... – Chandrakesh 2013-04-06 07:55:00
@ user1891823:如果'id'是int,那麼你如何能匹配'name'字段?你的問題沒有明確的含義... – 2013-04-06 08:29:19
你想這樣的:
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
在相同的變量有時我得到的名字,有時得到身份證。我沒有得到你的例子... – Chandrakesh 2013-04-06 08:00:34
確定,但你知道你在得到什麼嗎?如果不是那麼我們怎麼知道...什麼是模式 - 可能有人的名字是12345 - 我們需要更多的信息 – 2013-04-06 08:11:56
SQL需要被告知是否在名稱或ID的情況下,你不能只是有一個變量保持要麼計算機工作出來..必須有一些邏輯,這就是我的意思是通過設置column_to_match ...取決於你的場景 – 2013-04-06 08:14:37
您使用像Java,PHP這些編程語言? – 2013-04-06 08:09:54
java .................. – Chandrakesh 2013-04-06 08:12:07
在調用mysql之前,你在java中是否有名稱/ id變量,你是以編程方式創建sql字符串嗎?一個字的答案是有限的使用。 – 2013-04-06 08:23:54