【问题标题】:MySQL - Select where both field1 and field2 are greater than 0MySQL - 选择 field1 和 field2 都大于 0 的位置
【发布时间】:2016-12-28 21:19:34
【问题描述】:

我正在尝试执行一个选择查询,该查询是从一个表中选择的,其中字段 1 和字段 2 都大于 0。

NB field1 & field2 都是 INT / NOT NULL。

我尝试过以下方式:

SELECT * FROM tblname WHERE field1 > "0" AND field2 > "0"

SELECT * FROM tblname WHERE field1 <> "0" AND field2 <> "0"

SELECT * FROM tblname WHERE field1 != "0" AND field2 != "0"

但是,当我只是匹配是否为或为 = 0 时,此查询确实有效 -

SELECT * FROM tblname WHERE field1 = "0"

我需要检查这些以生成已收到申请评分的申请人列表,因此必须满足字段 1 和字段 2,因此假设对于大于 0 的匹配数字评分将起作用,但由于某种原因它没有?

【问题讨论】:

  • field1 是整数还是字符串?
  • 如果字段是 INT 类型,您应该将它们与零进行比较,而不是字符串文字。
  • 直接与零比较不起作用,与字符串文字比较在与零比较的单数查询中出于某种原因。两个字段都是整数。
  • @scaisEdge 不要对未引用的文本使用引号格式。
  • @GiantKiwi 定义“不起作用”。 不起作用:否则你不会问这个问题。

标签: mysql


【解决方案1】:

要获得更简洁的代码,您可以使用LEAST(),它将较小的参数放在括号内。

我相信你的问题是你在比较字符串而不是数字的范围(你提到那些是数字字段):

SELECT * FROM YourTable
WHERE LEAST(field1,field2) > 0

如果这不能解决您的问题 - 编辑您的问题并定义“不起作用”,是否没有选择任何内容?抛出错误? ..

【讨论】:

  • 嗯,这似乎按预期工作,所以我会继续 - 谢谢。
【解决方案2】:

你可以试试这个:

SELECT * FROM tblname WHERE field1 <> 0 AND field2 <> 0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-27
    • 1970-01-01
    • 2022-01-05
    • 1970-01-01
    • 2013-12-10
    • 1970-01-01
    • 2015-09-21
    相关资源
    最近更新 更多