查询中的mysql where子句列未给出正确的结果

zz2j4svz  于 2021-06-24  发布在  Mysql
关注(0)|答案(2)|浏览(434)

关闭。这个问题需要细节或清晰。它目前不接受答案。
**想改进这个问题吗?**通过编辑这个帖子来添加细节并澄清问题。

两年前关门了。
改进这个问题
表格:

从上表可以看出,下面的查询没有给出正确的结果。

SELECT * FROM `support_profile` 
WHERE `packageName` LIKE 'Platinum' AND `columnValue` IN ('50','150');

结果:

我需要一个查询来检查数据是否被更改,是否为特定的packagename和columnvalue?

qf9go6mv

qf9go6mv1#

这是in的内部表示

Where `columnValue` In (50)     => Where (columnValue = 50)
Where `columnValue` In (50,100) => Where ( (columnValue = 50) OR (columnValue =100) )

您的查询:

SELECT * FROM `support_profile` 
WHERE `packageName` LIKE 'Platinum' AND `columnValue` IN ('50','150');

相当于

SELECT * FROM `support_profile` 
WHERE 
(
    (`packageName` LIKE 'Platinum')
    AND
    (
        (`columnValue` = '50')
        OR (`columnValue` = '100')
    )
);

它将返回列值为50或100的所有铂金。
如果您只想退回白金50或白金100,您可以将其分组(通过对记录进行排序,确定您要的是最新的记录)

SELECT * FROM `support_profile` 
WHERE `packageName` LIKE 'Platinum' AND `columnValue` IN ('50','150')
GROUP BY `packageName`, `columnValue` ;

如果您想知道包值是否已更改

SELECT * FROM `support_profile`, Count(distinct `columnValue`) as valueChanges
WHERE `packageName` LIKE 'Platinum' AND `columnValue` IN ('50','150')
GROUP BY `packageName` ;

你得到了吗

silver 2
gold 1
platinum 1

请帮我们一个忙,在这里搜索如何提问

luaexgnf

luaexgnf2#

如果您想获取(50150)中的记录并且不想比较包名,那么删除like条件。使用如下查询。我希望这有助于您获得准确的输出,请张贴您的预期输出:

SELECT * FROM `support_profile` WHERE `columnValue` IN ('50','150');

如果要检查与50和150不匹配的数据,可以尝试以下查询:

SELECT * FROM `support_profile` WHERE `packageName` LIKE 'Platinum' AND  `columnValue` NOT IN ('50','150');

要检查这两个数据是否都存在于表中,请使用和,其中如下所示:

SELECT * FROM `support_profile` WHERE `packageName` LIKE 'Platinum' AND  `columnValue` = '50' AND `columnValue` = '150' ;

相关问题