我對包含大量客戶數據的數據庫運行此MySQL查詢。查詢是巨大的,所以我會剪掉部分。我們使用的是5.1.45-51-log的Percona SQL Server,它是一個非常常見的MySQL版本。MySQL查詢在我的應用程序中失敗,但在MySQL命令行工具中成功
select distinct * " +
"from customer_contact_preferences prefs " +
...
"join re_account_attribute uaa on uaa.account_id = ua.id " +
"where ... " +
...
"and uaa.attribute_key = 'R_GROUP' " +
//"and uaa.attribute_value in (?) " + //PROBLEM HERE
"order by customer_contact_id)"
uaa.attribute值的參數是'1','2',3'。
在代碼中,我們使用org.springframework.jdbc.core.simple.SimpleJDBCDaoSupport.update()來調用此查詢。 通過Spring在代碼中調用它時,它錯誤地返回0行。當我替換參數(4人檢查了我替換權),並在mysql命令行上運行時,查詢正確返回> 5行。如果我註釋掉問題行,就像我在上面做的那樣,我會得到> 5,實際上行數太多(這就是爲什麼我需要這個約束)。
該表描述如下:
| attribute_key | varchar(255) | NO | | NULL | |
| attribute_value | varchar(255) | NO | | NULL | |
據,所以我們可以存儲任何類型的鍵/值對,並不限於VARCHAR或整數。
無論如何,當你有一個字符串或字符串列表時,「IN」有什麼問題?謝謝。
謝謝,我剛剛實現了這一點,它的工作。 – 2010-11-08 17:04:15