mySQL查询哪里有问题

时间:2009-10-07 14:24:07

标签: sql mysql

有人可以告诉我这里我做错了什么吗?

$query = "SELECT * 
            FROM routes 
           WHERE econ <> maxecon 
        ORDER BY `id`;";

没有WHERE,它运行正常,所以我知道这就是问题。

我想选择列econ不等于maxecon的数据。在这个阶段这甚至是可能的还是我必须把它全部拿掉然后把它切掉?

6 个答案:

答案 0 :(得分:4)

替换&lt;&gt;与!=工作?

$query = "SELECT * FROM routes WHERE econ != maxecon ORDER BY `id`";

此外,您不需要在sql语句中包含结束分号。

答案 1 :(得分:1)

您发布的内容看起来不错。您是否确实得到了两个值不同的示例? (查看没有WHERE的查询结果。)

此外,这些字段是否可以为空?自从我使用MySQL以来已经很久了,但是在SQL Server上,项目与&lt;&gt;无法比较运算符,如果其中一个操作数为NULL。

尝试: -

SELECT * FROM routes 
WHERE 
   ( econ <> maxecon ) 
OR ( econ IS NULL AND maxecon IS NOT NULL )
OR ( econ IS NOT NULL AND maxecon IS NULL )
ORDER BY id;

当然,引用您的实施语言。

答案 2 :(得分:0)

您的查询应该是:

$query = "SELECT * FROM routes WHERE econ != maxecon ORDER BY `id`";

当然,如果econ等于maxecon那么你将得不到任何结果,也许你可以从表中发布一些样本数据?

答案 3 :(得分:0)

我会尝试!=而不是<>

答案 4 :(得分:0)

可能出现的问题:

  • 您可能需要反引名称econ和maxecon。
  • 您可能没有任何符合条件的数据。
  • 您可能拥有符合条件的数据,但仅限于一列为NULL且&lt;&gt;无法找到这些数据的情况。

如果您的问题是最后一个,请尝试NOT&lt; =&gt;,这是MySQL中特殊的“NULL安全等于”运算符的否定。

答案 5 :(得分:0)

这是什么编程语言?我用过的大多数都不会让你在查询中加上分号......