mysql - 在 where 子句中选择带有 IF 的记录?

标签 mysql select

我需要从表中提取一些数据

例如:

+-------------+------------+-------------+------------+  
| Code        | Progress   |   QTY       | Faulty     |
+-------------+------------+-------------+------------+  
| A           | 10         |      100    |    0       |                 
+-------------+------------+-------------+------------+
| B           | 1          |      10     |    0       |                 
+-------------+------------+-------------+------------+
| C           | 4          |      0      |    1       |                 
+-------------+------------+-------------+------------+
| D           | 7          |      100    |    0       |                 
+-------------+------------+-------------+------------+


SELECT Code, Progress, QTY, Faulty 
FROM myTable 
WHERE Progress <> 7 AND Progress = 4 AND QTY > 0

如何选择所有具有 - 进度 <> 7 - 和进度 4,但仅当进度为大于 0 的行的数量时 - Faulty 的值为 1?

最佳答案

请试一试

SELECT 
Code, 
Progress, 
QTY, 
Faulty 
FROM myTable 
WHERE Progress NOT IN(4,7)
      OR (Progress = 4 AND QTY > 0 AND Faulty = 1)

解释:

条件类似于 Progress <> 7将带来具有 Progress = 4 的记录.该特定记录可能没有 QTY > 0 AND Faulty = 1 .

这就是为什么要使用 Progress NOT IN (4,7)作为第一个条件。

现在您需要担心您提到的第二个案例,它非常简单。

(Progress = 4 AND QTY > 0 AND Faulty = 1)

记录有Progress = 4 having QTY >0 and Faulty = 1将被带入最终的结果集中。

关于mysql - 在 where 子句中选择带有 IF 的记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40128181/

相关文章:

php - 如何使用android studio将带有字符串数据的图像上传到mysql服务器

MySQL INSERT INTO 错误 #1064

mysql - 使查询内部查询结果可选择

C++:使用选择()

php - PHP MYSQL Select 语句帮助

mysql - 未知属性错误 Rails 5.1.1 - 无法识别具有连接表的模型属性

linq - 使用 LINQ 从表中仅获取一个值

mysql错误选择输出

php - 插入多个复选框选择的值

Javascript:在 'select' 上运行函数 'option'/How to stop setInterval(...);?