首先要解释这一点有点复杂。
我只遇到一个CONCAT问题。以下查询返回表中不存在的“区域设置”值。
SELECT client.description, client.name, loc.description
FROM clients AS client
LEFT JOIN FromWhere AS from ON from.id = client.id_from
LEFT JOIN locale AS loc ON loc.id = from.id_loc
client.description LIKE CONCAT('%', ?, '%')
AND IFNULL(client.name, '') LIKE CONCAT('%', ?, '%')
AND IFNULL(loc.description, '') LIKE CONCAT('%', ?, '%')
GROUP BY client.id
ORDER BY client.id DESC
我的表格重现以下内容(正确):
-description-------name----------locale
-------------------------------------------
Dude... Testing Paris
No stop Another null
Representing null null
stackover OneMore London
使用上面的代码MySQL,如果我改变到我想要的东西,我得到了这个奇怪的结果:
SELECT client.description, client.name, loc.description
FROM clients AS client
LEFT JOIN FromWhere AS from ON from.id = client.id_from
LEFT JOIN locale AS loc ON loc.id = from.id_loc
client.description LIKE CONCAT('%', 'stackover', '%')
AND IFNULL(client.name, '') LIKE CONCAT('%', 'OneMore', '%')
AND IFNULL(loc.description, '') LIKE CONCAT('%', 'OK', '%')
GROUP BY client.id
ORDER BY client.id DESC
-description-------name----------locale
-------------------------------------------
stackover OneMore OK
如您所见,“区域设置” - >确定不存在.. 这种情况发生在一些数值上......我无法弄清楚它们之间的联系。
有什么想法吗?
答案 0 :(得分:1)
我不确定问题出在哪里
我已经在下面的SQL Fiddle中重新创建了表,事情似乎工作正常。
请在位置描述上评论/取消注释过滤器并检查。
http://sqlfiddle.com/#!2/8f6a4c/8
如果不满意,请您更新具体方案的小提琴。