mysql - 从一列中选择多行

标签 mysql

下面是订单表

order_table     
product_id  amount  price
1           2       4
1           5       4
2           2       4
2           3       4
3           4       4
4           3       4
4           2       4
4           2       4
5           4       4
5           1       4
6           1       4
6           1       4

下面是我的值表

value_table 
product_id  value
1           a
1           b
1           c
2           a
2           b
2           c
3           a
3           d
3           c
4           a
4           d
4           c
5           a
5           b
5           c
6           a
6           d
6           c

我要实现的是下表。

product_id  amount*price as total values
3           12                    a,c and not equal to b
4           28                    a,c and not equal to b
6           8                     a,c and not equal to b

我确实知道,一旦您对 product_id 进行分组,它只会显示一个值 ='a' 或 'c'。很好,我正在寻找的是同时包含 a、c 但不想要值等于 = b 的 product_id 的产品 所以总而言之,只有 3、4、6 应该分组显示,这样我就不会对相同顺序的重复项进行总结。

最佳答案

试试这个:

SELECT product_id,SUM(amount*price) as Totalprice
FROM order_table
WHERE product_id NOT IN
      (SELECT product_id
       FROM value_table
       WHERE value='b')
GROUP BY product_id

解释:

内部查询选择一个值为 b 的 product_ids 列表。因此内部查询的结果为 (1,2,5)。

外部查询计算该列表中不存在的 product_ids 的价格总和。即,不在 (1,2,5) 的列表中

结果:

PRODUCT_ID  TOTAL
3           16
4           28
6           8

SQL Fiddle 中查看结果.

关于mysql - 从一列中选择多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28200783/

相关文章:

mysql - 如何恢复mysql中root用户的权限

mysql - 从 Travel_point 表中获取 tp.address_from 和 tp.address_to

mysql - 自然连接产生的表的名称是什么?

MySQL 组合两个 where 运算符 WHERE row LIKE '%$search%' AND WHERE NOT row ='$id'

mysql - 使用 ODBC sql 查询的结果填充 VBA 数组

mysql - 如何从 MySQL 中的日期获取当年的当前周数?

php - 尝试使 PHP 代码在 bluemix 中运行

php - isset条件在不同的点击下表现不同

MySql:插入一行并获取内容

php - 费率结构的数据库/算法