MySQL查询返回未知值

时间:2013-12-16 17:06:58

标签: mysql sql

首先要解释这一点有点复杂。

我只遇到一个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

如您所见,“区域设置” - >确定不存在.. 这种情况发生在一些数值上......我无法弄清楚它们之间的联系。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我不确定问题出在哪里

我已经在下面的SQL Fiddle中重新创建了表,事情似乎工作正常。

请在位置描述上评论/取消注释过滤器并检查。

http://sqlfiddle.com/#!2/8f6a4c/8

如果不满意,请您更新具体方案的小提琴。