Mysql where 子句列 IN 查询未给出正确结果
Mysql where clause column IN query not giving correct results
Table:
根据上面的 table,下面的查询没有给出正确的结果。
SELECT * FROM `support_profile`
WHERE `packageName` LIKE 'Platinum' AND `columnValue` IN ('50','150');
结果:
我需要一个查询来检查特定 packageName 和 columnValue 的数据是否已更改?
如果您想获取 IN (50,150) 的记录并且不想比较包名称,请删除类似条件。使用查询如下。我希望这可以帮助您获得准确的输出,请 post 您的预期输出:
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');
要检查两个数据是否都存在于 table 中,请在 WHERE 中使用 AND,如下所示:
SELECT * FROM `support_profile` WHERE `packageName` LIKE 'Platinum' AND `columnValue` = '50' AND `columnValue` = '150' ;
这里是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')
)
);
return columnValue 为 50 或 100 的所有白金。
如果您只想return 白金 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
PS: 请帮我们一个忙,搜索如何提问 here
Table:
根据上面的 table,下面的查询没有给出正确的结果。
SELECT * FROM `support_profile`
WHERE `packageName` LIKE 'Platinum' AND `columnValue` IN ('50','150');
结果:
我需要一个查询来检查特定 packageName 和 columnValue 的数据是否已更改?
如果您想获取 IN (50,150) 的记录并且不想比较包名称,请删除类似条件。使用查询如下。我希望这可以帮助您获得准确的输出,请 post 您的预期输出:
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');
要检查两个数据是否都存在于 table 中,请在 WHERE 中使用 AND,如下所示:
SELECT * FROM `support_profile` WHERE `packageName` LIKE 'Platinum' AND `columnValue` = '50' AND `columnValue` = '150' ;
这里是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')
)
);
return columnValue 为 50 或 100 的所有白金。
如果您只想return 白金 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
PS: 请帮我们一个忙,搜索如何提问 here