首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于多个记录条件返回结果

基于多个记录条件返回结果
EN

Stack Overflow用户
提问于 2012-06-22 18:29:29
回答 1查看 104关注 0票数 0

我需要从包含产品A和产品B的交易列表中返回发票

表格示例

代码语言:javascript
复制
prod_code | invoice
 apple    |  100
 banana   |  100
 orange   |  100
 apple    |  101
 kiwi     |  101
 grape    |  101
 apple    |  102
 banana   |  102
 grape    |  102

我需要输入2个产品,它必须列出发票号码,有两个产品。如果我输入苹果和香蕉,它必须返回100和102。如果我输入苹果和葡萄,它必须返回101和102。

这看起来应该很简单,但对于我的生活来说,我无法思考如何做到这一点。

已解决

好了,我解决了我自己的问题。不知道为什么我没有早点想到这一点。因为我认为这很简单。

代码语言:javascript
复制
select invoice from transaction where prod_code="apple" and invoice in (select invoice from transaction where prod_code="banana")
EN

回答 1

Stack Overflow用户

发布于 2012-06-22 18:32:14

代码语言:javascript
复制
SELECT
  invoice
FROM
  transactions
WHERE
  prod_code IN ('apple', 'banana')
GROUP BY
  invoice
HAVING
  COUNT(DISTINCT prod_code) = 2

但是,请注意,这不是一个快速的查询,而且使用您现有的结构,不容易获得显著的性能提升。

根据其性质,第一步必须由find all invoices with 'apple' <OR> 'banana'执行,然后才能过滤出同时具有这两个属性的发票。

另一种选择是...

代码语言:javascript
复制
SELECT
  t_apple.invoice
FROM
  transactions     AS t_apple
INNER JOIN
  transactions     AS t_banana
    ON t_apple.invoice = t_banana.invoice
WHERE
      t_apple.prod_code  = 'apple'
  AND t_banana.prod_code = 'banana'

但要将其推广到n prod_codes就不那么简单了。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11154484

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档