【问题标题】:This SQL Statement won't work with AND operator此 SQL 语句不适用于 AND 运算符
【发布时间】:2015-07-06 20:55:07
【问题描述】:

我已经运行了以下查询并 print_r() 它:

$query = "SELECT TemplateID, UserId FROM database WHERE UserId = '598'";

结果如下:

然后我运行以下查询并 print_r() 它:

$query = "SELECT TemplateID, UserId FROM database WHERE TemplateID = '5160';

结果如下:

由于某种原因,下面的语句不起作用,只返回空:

SELECT * FROM database WHERE UserId = '598' AND TemplateID = '5160'

请帮我指出我哪里做错了。我已经坚持了几个小时。从概念上讲,我相信第三个陈述应该有效。我还检查了语法和拼写,但似乎找不到原因。

【问题讨论】:

  • 你在第三条语句中有错字TempalteID
  • SELECT * FROM database WHERE UserId = 'tester' union SELECT * FROM database WHERE TemplateID = '1111111111' - 这会产生什么结果?或者只是将 AND 更改为 OR - SELECT * FROM database WHERE UserId = 'tester' OR TemplateID = '1111111111' - 这会给出 2 行吗?
  • 您确定您使用的是现在显示为database 的表名吗?如果所有数据都匹配,则查询良好。
  • @OIS 为什么需要它或提供一点帮助? “tester”和“1111111111”在相同的报告数据行中。
  • @user2864740 请运行这两个查询 - 这称为调试。

标签: php sql sql-server select


【解决方案1】:

您的第三条语句正在检查 UserID = 'test',但在您提供的示例数据中,您只有一条 UserID = 'tester' 的记录。

所以你的语句不会返回任何东西,因为没有这样的行匹配这两个项目

【讨论】:

    【解决方案2】:

    也许您在 TemplateID 列的某处有一些空格。试试

    SELECT * FROM database WHERE UserId = 'tester' AND TemplateID LIKE '%1111111111%'

    实际检查任一字段是否有空格

    SELECT * 
    FROM   database 
    WHERE  UserId LIKE '%tester%' 
           AND TemplateID LIKE '%1111111111%'
    

    去掉单引号

    SELECT * FROM database WHERE UserId = 598 AND TemplateID = 5160

    【讨论】:

    • 嗨。我已经尝试过 LIKE 语句,但它不起作用。我已经用截图再次上传了我的问题。请看一下。
    【解决方案3】:

    SELECT DISTINCT TemplateID, UserID FROM database WHERE 模板 ID='5160' 按用户 ID 订购

    此查询指定模板ID 和用户ID 的不同组合,可以帮助您检查您想要的组合是否存在于您的数据库中

    【讨论】:

    • 嗨。我已经尝试过您给我的查询,并且我正在寻找的组合确实存在。
    • 在连接到数据库时在客户端(cli 或 gui)中尝试查询。如果它在那里不起作用,我建议你删除它,只用 sql 和 sql-server 标签做一个新帖子。从一开始就清楚地解释问题,使用解释表、解释选择等。
    • 您需要解释发生了什么,收到任何错误或消息,或者只是一个空白的输出窗口
    猜你喜欢
    • 2011-01-13
    • 2014-09-02
    • 1970-01-01
    • 2014-08-01
    • 2011-04-11
    • 1970-01-01
    • 1970-01-01
    • 2012-02-22
    • 2012-11-04
    相关资源
    最近更新 更多