我在下面的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是传单表主键。
答案 0 :(得分:2)
试试这个:
如果userid
是int数据类型,则表示您必须删除单引号userid=400
如果fid
是字符串,则表示fID='6'
SELECT * FROM flyers WHERE
{FID {1}} {userId的{1}}
答案 1 :(得分:1)
您好在您的查询中,您只有一个错误,即使用uerId
使用back ticks
的单引号代替或不使用。
SELECT * FROM flyers WHERE fId='6' AND userId='400'
SELECT * FROM flyers WHERE fId=6 AND userId=400// safe not to use quotes
但我建议不要因为以下原因而在数字周围使用引号
真正的问题归结为类型转换。当您将数字放在引号内时,它将被视为字符串,MySQL
必须将其转换为数字才能执行query
。虽然这可能需要花费很少的时间,但是当MySQL没有很好地转换你的字符串时,真正的问题就开始发生了。例如,MySQL
会转换基本字符串,如' 123'到integer
123,但会将一些较大的数字(如' 18015376320243459
')转换为浮点数。由于浮点可以舍入,因此查询可能会返回不一致的结果