我试图运行该SQL查询没有返回行:查询在MySQL
SELECT *
FROM `tickets_extra_emails`
WHERE ticketnumber = '50909'
AND email_address = '[email protected]'
但它说,但没有行返回,当我浏览表存在与上述值多行
我试图运行该SQL查询没有返回行:查询在MySQL
SELECT *
FROM `tickets_extra_emails`
WHERE ticketnumber = '50909'
AND email_address = '[email protected]'
但它说,但没有行返回,当我浏览表存在与上述值多行
你查询是正确的,没有结果意味着您没有包含这些值的行。使用VARCHAR
值时要小心,因为放置在值的开始处的空格会使结果不相等(最后的空格不会影响相等的操作,但如果是LIKE
子句,则会考虑开始和结束空格)!
尝试此查询:
SELECT *
FROM `tickets_extra_emails` T
WHERE TRIM(T.ticketnumber) = '50909'
AND TRIM(T.email_address) = '[email protected]'
与您查询的版本唯一的区别是使用TRIM()
功能。该功能将删除所有位于值的开始/结尾处的空间,并可能解决您的问题。
在你仍然没有结果的情况下,向我们提供一个数据样本,因为你的问题确实是你在表格中的值,而不是你在这里使用的查询。
希望这会有所帮助。
varchar值末尾的尾随空格[在相等性测试期间未考虑](http://sqlfiddle.com/#!2/bcf622/2),但在'LIKE'测试期间考虑*。只是想澄清这一点,因为你声称放置在最后的空间也会导致问题;开始时只有空格。 – cdhowie 2014-09-04 15:35:45
@cdhowie谢谢你的澄清,我已经完成了我的回答,包括你的反馈意见 – 2014-09-04 20:04:39
如果查询返回零行,则有零个匹配的行。也许有一些空白处扔掉东西。如果可能,请尝试创建一个脚本,该脚本将填充虚拟数据并在此处发布该脚本,显示无法针对该虚拟数据返回行的查询。 – cdhowie 2014-09-03 23:13:16
'ticketnumber'字段的数据类型是什么?这真的是一种字符类型而不是数字吗? – Guffa 2014-09-03 23:14:20
ticketnumber = varchar(20) – user3843997 2014-09-03 23:19:11