【问题标题】:SELECT * FROM WHERE does not find all recordsSELECT * FROM WHERE 没有找到所有记录
【发布时间】:2014-06-17 12:18:54
【问题描述】:

当我输入时:

select * from 'saleslog' where 'Status' = 'Pending';

select * from 'saleslog' where 'Status' = "Pending";

select * from saleslog where Status = 'Pending';

尽管在“状态”列中有数百行具有“待定”值,但我只显示了 3 条记录。当我寻找“待定”以外的值时,也会发生同样的情况。

但是,如果我输入:

select * from saleslog where status like "%Pending%";

然后显示大部分(如果不是全部)记录。 Pending 值前后绝对不能有空格或任何其他字符。

我想知道是否需要修复表“saleslog”,如果需要,如何修复?我对 SQL 有点陌生。

【问题讨论】:

    标签: mysql sql select command where


    【解决方案1】:

    尝试以下方法:

    UPDATE `saleslog` SET `status` = TRIM(`status`);
    SELECT * FROM `saleslog` WHERE `status` = 'Pending';
    

    【讨论】:

    • 我收到“ERROR 1064 (42000): You have an error in your SQL Syntax:...”
    • 我也使用第三方 PHP 软件,例如 Adminder Editor,并在其中搜索记录会得到相同的结果。
    • 哦,我刚刚复制并粘贴了您的代码,它确实在状态列中显示了三个带有“待定”值的记录。这次没有错误 - 也许我第一次打错了。仍然没有找到/显示剩余的 100 条记录。
    • 我已经按照您的建议进行了尝试,这就是我所拥有的,但后来我按照 cmreynol 的建议进行了操作,并且似乎奏效了。 mysql> 更新saleslog 设置status = TRIM(status);查询正常,0 行受影响(0.01 秒)匹配行:2007 更改:0 警告:0 SELECT * FROM saleslog WHERE status = 'Pending';此处的表格... 3 行(0.00 秒)
    【解决方案2】:

    字段中可能存在您看不到的隐藏字符,例如制表符、回车符或换行符。您是否尝试过在现场进行更新以尝试纠正它?也许尝试运行下面的更新查询,然后再次运行 SELECT 查询:

    UPDATE saleslog SET status = 'Pending' WHERE status LIKE '%Pending%'  
    

    【讨论】:

    • UPDATE saleslog SET status = 'Pending' WHERE status LIKE '%Pending%' 查询正常,影响 240 行(0.21 秒) 匹配行:243 更改:240 警告:0 这成功了。谢谢!似乎现在正在显示所有行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-14
    • 2015-09-22
    • 2010-09-17
    • 2014-02-23
    • 2012-01-06
    • 1970-01-01
    相关资源
    最近更新 更多