mysql - SQL 的精确结果

标签 mysql sql

所以我试图通过具有功能来获得确切的结果,并且我尝试了很多方法但没有成功。

故事是我有这个 SQL 查询:

SELECT 
    SQL_CALC_FOUND_ROWS customers.*, 
    GROUP_CONCAT(fieldsContent.Content SEPARATOR '%||%') AS Content, 
    GROUP_CONCAT(fieldsContent.FieldID SEPARATOR '%||%') AS FieldID, 
    customers.Created, 
    customers.ID
FROM (`customers`)
    LEFT OUTER JOIN `fieldsContent` ON `fieldsContent`.`TypeID` = `customers`.`ID`
    HAVING Content LIKE "%2%" AND LIKE "%new%"
    GROUP BY `fieldsContent`.`TypeID`
    ORDER BY `customers`.`Created` DESC

结果:

stdClass Object
(
    [ID] => 4857
    [Created] => 1403714637
    [Content] => newman%||%noman%||%newemail@gmail.com%||%92292%||%old%||%7
    [FieldID] => C359FE4B-7A5B-689F-8A26-D030CFC65475%||%E34399EB-0509-2F00-EAD1-38753FCAEA5C%||%3172E7F4-B445-2F7A-74C8-F9C9E85A4C22%||%26D87695-D9F4-9E2F-2BA7-753FBF3E0BBA%||%E443B0BD-5283-CD02-F569-3B05B615B5BC%||%979C2844-870F-961F-FA28-12AC615346E5
)
stdClass Object
(
    [ID] => 175997
    [Created] => 1403714632
    [Content] => john%||%doe%||%google@gmail.com%||%0847%||%new%||%2
    [FieldID] => C359FE4B-7A5B-689F-8A26-D030CFC65475%||%E34399EB-0509-2F00-EAD1-38753FCAEA5C%||%3172E7F4-B445-2F7A-74C8-F9C9E85A4C22%||%26D87695-D9F4-9E2F-2BA7-753FBF3E0BBA%||%E443B0BD-5283-CD02-F569-3B05B615B5BC%||%979C2844-870F-961F-FA28-12AC615346E5
)

问题是我只想要第二个结果,只有在我有单词“new”和“2”的地方, 不是“new”这个词像newman那样出现,而数字2像“92292”那样出现。

所以我只需要第二个结果,而不是第一个。

最主要的是,我确切地知道“new”一词将在哪个分隔符之后,“2”将在哪个分隔符之后,但我不知道如何应用它,因为“new”总是在第四个分隔符之后分隔符和“2”将位于第五个分隔符之后。

有什么疯狂的想法可以解决这个问题吗? 谢谢!

最佳答案

更改此:

HAVING Content LIKE "%2%" AND LIKE "%new%"

对此:

HAVING Content LIKE "%\%2" ESCAPE "\" AND LIKE "%\%new\%%" ESCAPE "\"

假设您正在查找 FieldID“979C2844-870F-961F-FA28-12AC615346E5”字符串末尾的 2。如果您需要更灵活,您可能需要将其更改为 where 子句(这不会破坏分组)并专门在子查询中选择 FieldID/Content 对。

此外,我建议使用不同的分隔符,这样您就不需要使用 like 进行转义。

关于mysql - SQL 的精确结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24416662/

相关文章:

mysql 日期输入

php - 为准备好的语句绑定(bind)多个参数

SQL - 连接来自同一个表的行

mysql - SQL 按索引对多个结果进行排序,通过添加对应于同一键的索引

sql - 在 SQL-Server 中表示“某物”数据

php - 在php中使用当前的lat/lng查询数据库并将数据返回给用户

mysql 复制 View 不起作用

mysql - 左连接可交换吗?它有什么属性?

mysql - 循环中 MySQL 中两个 POINT 值之间的距离

c# - 微软报告服务。我应该使用网络服务作为数据源吗?