表格
从上表中,下面的查询没有给出正确的结果。
SELECT * FROM `support_profile`
WHERE `packageName` LIKE 'Platinum' AND `columnValue` IN ('50','150');
结果:
对于特定的packageName和columnValue,我需要一个查询来检查数据是否已更改?
答案 0 :(得分:0)
如果您想获取IN(50,150)并且不想比较包名称的记录,请删除相似的条件。使用如下查询。我希望这可以帮助您获得准确的输出,并请发布您的预期输出:
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');
要检查表中是否存在数据,请在WHERE中使用AND,如下所示:
SELECT * FROM `support_profile` WHERE `packageName` LIKE 'Platinum' AND `columnValue` = '50' AND `columnValue` = '150' ;
答案 1 :(得分:0)
这是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')
)
);
将使用columnValue 50或100返回所有Platinum。
如果您只想返回铂金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