【问题标题】:SQL query not workig as expected (MySQL)SQL 查询未按预期工作(MySQL)
【发布时间】:2013-09-15 11:29:43
【问题描述】:

我正在尝试运行一个简单的 MySQL 查询,但不确定为什么它没有按预期工作。我有一张表clrs_how_to_reach 有以下列

  • 身份证
  • 州名
  • 目的地名称
  • how_to_reach

上面的表格只有一个条目,我添加了用于测试目的。 当我运行以下查询时

SELECT * FROM clrs_how_to_reach WHERE id=1

我得到的结果和查询显示它获取了 1 个结果,但是当我运行以下查询时:

SELECT count(*) FROM clrs_how_to_reach 
WHERE state_name='himachal-pradesh' AND destination_name='dalhousie'

even select * from rest of query

当两个列都有我在查询中使用的值时,不显示任何结果

不知道为什么会这样。 作为补充说明,我使用的是 wordpress,但我什至在 SQL 控制台上尝试了这些查询。

编辑

当我将state_name='himachal-pradesh' 更改为state_name='himachalpradesh' 时,我能够得到结果,但我无法更改它,因为应用程序在整个应用程序中都使用此约定。

这里是查询select * from clrs_how_to_reach where id=1;的结果

http://i42.tinypic.com/2vd4tmq.png

【问题讨论】:

  • 你能把select * from clrs_how_to_reach where id=1查询的结果贴给我们吗?
  • 贴一些表格数据,可能是一个简单的错字。
  • @AntoanMilkov:它说找到 1 条记录并将显示该选定记录
  • @user2781057 这正是我想看到的记录文本!
  • @AntoanMilkov:我更新了我的帖子,问题在于有 - 在文本中

标签: mysql sql wordpress


【解决方案1】:

你可能想这样尝试:-

select count(*) as Column1 from clrs_how_to_reach 
where state_name ='himachalpradesh' and destination_name = 'dalhousie'

请检查himachal-pradesh 在列之间是否有(-)

编辑:-

您可能在示例数据中存储了himachalpradesh,但在实际数据中您的值可能为himachal-pradesh。否则您可能无法获得himachalpradesh 的值。

添加了SQLFIDDLE

正如您所说,问题在于列排序设置

【讨论】:

  • 我只想要 state-name 和 destination-name 应该匹配的确切结果
  • 它被存储为'himachal-pradesh'
  • 我不知道这一点,我将 himachal-pradesh 更改为 himachalpradesh 并且能够得到结果,但遗憾的是我无法更改它,因为这种约定被大量使用。
  • 如果state_name ='himachalpradesh' 返回结果,显然它不会在数据库中存储为himachal-pradesh。尝试SELECT * FROM clrs_how_to_reach 进行确认。也许你已经盯着数据看了很长时间,你只是认为你看到了破折号(发生在我身上)。
  • @Anthony: 不,我已经检查过了,即使我删除了样本数据并添加了新数据,但结果仍然相同
【解决方案2】:

使用下面的查询

select count(*) as result from clrs_how_to_reach where state_name='himachal-pradesh' and destination_name='dalhousie'

【讨论】:

    【解决方案3】:

    我认为它的存储方式不像:

    'himachal-pradesh'
    

    但是作为:

    'himachal–pradesh'
    

    它们的接缝可能相同,但实际上并非如此。检查字符代码!

    无论如何,将这两种情况结合起来非常容易,无需太多汗水:

    SELECT count(*) FROM clrs_how_to_reach 
    WHERE state_name LIKE 'himachal_pradesh' AND destination_name='dalhousie';
    

    请记住,您可以使用“_”作为 MySQL LIKE 语句中匹配的任何单个字符。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-13
      • 1970-01-01
      • 2023-03-24
      • 2015-09-05
      • 1970-01-01
      相关资源
      最近更新 更多