我有一个类似于以下内容的查询:
SELECT
`Table1`.`UniqueID` as `parent_id`,
`Table1`.`OtherField`,
(SELECT SUM(`SomeRandomField`) FROM `AnotherTable` WHERE `SomeRandomField` NOT LIKE '%Something%' AND `UniqueID` = `parent_id`) AS `DataIWant`
#Other selects, a couple of joins etc here
在我的场景中-Table1.UniqueID
为(Parent_Id)包含唯一的整数
在我的场景中-AnotherTable.UniqueID
既包含表1中的唯一整数-也可能包含其他与此整数开头的无关垃圾。
我遇到的问题是,此查询的现状是,当parent_id
为1400时,子选择仍将返回SumRadomField的总和,包括UniqueID'1400A2D45A'
如何在此字段上进行精确匹配?搜索后-我还没有找到任何可行的方法,包括双引号UniqueID,添加各种转义字符,双等等。
答案 0 :(得分:2)
尝试使用CONCAT
和LIKE
而不是等于运算符(=
)。
替换
... `UniqueID` = `parent_id` ...
使用
... `UniqueID` LIKE CONCAT(`parent_id`, '%') ...
完整的查询将是
SELECT
`Table1`.`UniqueID` AS `parent_id`,
`Table1`.`OtherField`,
(SELECT
SUM(`SomeRandomField`)
FROM
`AnotherTable`
WHERE
`SomeRandomField` NOT LIKE '%Something%'
AND `UniqueID` LIKE CONCAT(`parent_id`, '%')) AS `DataIWant`
-- and your joins...