SQL在将主键与where子句中的另一个值合并时返回空行

斯姆苏德

我在以下sql上得到空行

SELECT * FROM flyers WHERE fId='6' AND 'userId'='400' 

MySQL返回空结果集

(i.e. zero rows). (Query took 0.0004 sec)

但是当我使用

SELECT * FROM flyers WHERE fId='6'

显示行

0 - 0 (1 total, Query took 0.0005 sec).

当我得到我的结果时,仅使用主键是正确的。

但是我不知道为什么mysql在对主键使用AND时返回空行。

注意:-fId是传单表的主键。

马姆塔

在您的查询中,您只有一个错误,那就是您在周围使用了单引号userId使用反引号代替或不使用反引号:

SELECT * FROM flyers WHERE fId='6' AND userId='400'  

SELECT * FROM flyers WHERE fId=6 AND userId=400// safe not to use quotes

但出于以下原因,我建议不要在数字周围使用引号。

真正的问题归结为类型转换。当您将数字放在引号中时,它将被视为字符串,并且MySQL必须先将其转换为数字,然后才能执行查询。尽管这可能会花费少量时间,但是当MySQL在转换字符串时做得不好时,真正的问题就开始出现。

例如,MySQL会将基本字符串(如“ 123”)转换为integer123,但会将某些较大的数字(如“ 18015376320243459”)转换为浮点数。由于浮点可以四舍五入,因此您的查询可能会返回不一致的结果。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用另一个表中的 where 子句进行 select count(*) 返回空行?

在where子句中将查询返回的值用于另一个选择查询

在SQL的IN子句中为不匹配的值返回空行

如何以线性方式将IN子句中的值列表与另一个IN子句匹配

在Where子句中添加另一个表

将替换SQL作为另一个SQL中的where子句的输出

Sql从表中选择但使用另一个表值作为where子句

SQL查询搜索将where子句放在另一个之上

将另一个表中的逐行值转换为字符串并将其插入到 SQL 中的 NOT IN 子句中

如果一个 api 返回空值,则调用另一个 api

如果满足两个条件(一个在 WHERE 子句中,另一个在 HAVING 子句中)中的任何一个,则选择行

如何将这些查询与来自另一个父表的 where 子句合并为单个查询?

如何引用在WHERE子句中计算的另一个字段?

从where子句到另一个where子句的SQL INSERT

检查SELECT子句中另一个表中是否存在值

合并另一个表中的数据时违反主键

将Firebase数据库阵列返回到另一个函数,但返回空

SQL WHERE NOT IN 查询返回另一个表中的值

在另一个表的select子句中使用一个表的列值

另一个IMPORTXML返回空内容

当CASE语句为true时,SQL返回另一个表的值

如果在 where 子句中我们有另一个值,这是什么意思

使用SQL表联接将一个表中的值用作对另一个表中的值的引用(主键)

将SQL的返回值用作另一个查询中的参数

如何使用PHP将一个SQL命令的返回值插入另一个表

如何将一个系列的值合并到另一个系列

将值从一个表插入到另一个具有不同主键的值

插入后如何从WITH子句返回另一个值

当where子句使用另一个表中的项目时,Mysqli Select查询