MySQL 查询等于列名

标签 mysql

我有一个类似于以下内容的查询:

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 as (Parent_Id) 包含唯一整数

在我的场景中 - AnotherTable.UniqueID 包含表 1 中的唯一整数 - 但也可能包含以此整数开头的其他不相关的垃圾。

我遇到的问题是,这个查询的现状是,当parent_id为1400时,子选择仍将返回SumRadomField的总和,包括UniqueID'1400A2D45A'

如何在该字段上进行精确匹配?经过搜索 - 我还没有找到任何有效的方法,包括双引号 UniqueID、添加各种转义字符、双等于等。

最佳答案

尝试使用 CONCATLIKE 而不是等于运算符 (=)。

替换

... `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...

关于MySQL 查询等于列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51524905/

相关文章:

c# - InvalidOperationException 未处理

返回无效结果的 mySQL 搜索函数

sql - 使用 IN 运算符优化 MySQL 查询

mysql - 在连接表而不是实际表上使用查询

mysql - 有没有更快的方法将数据从 R 上传到 MySql?

php - 如何使用php和mysql在单循环中计算多个表的每月总和?

php - 如何从mysql中的列/表中选择多行?

mysql - 忽略重复项并在 mysql 中插入新记录

php - 我尝试使用 session 数据调用数组上的成员函数 save()

c# - 如何将下拉列表中的选定数据发送到mysql中的相应表?