如何仅在包含特定值的情况下才显示SQL数据

时间:2015-03-01 16:25:13

标签: mysql sql

IM试图

"获取通过任何代理商订购的产品ID,这些代理商至少从京都的客户处获得一份订单,按ID从最高到最低排序。"

我将如何在SQL中编写此代码?这就是我目前所拥有的

SELECT pid FROM orders

WHERE cid IN (

Select cid FROM customers
WHERE cid = 'c006'

);

表:http://i.gyazo.com/dbe542fb2315d663c75c23e3ecfb74fd.png

3 个答案:

答案 0 :(得分:0)

你可以试试这个

`SELECT pid FROM orders WHERE cid IN ( Select cid FROM customers
 WHERE cid.city == "Kyoto") order by pid DESC;`

在这种情况下,您不需要明确提及客户的ID(c006)。 还有其他几种方法也可以使用join What is the difference between "INNER JOIN" and "OUTER JOIN"?这个帖子包含所有需要的信息..

SELECT pid FROM orders WHERE cid == "c006" order by pid;

就是这样。整个查询是挖掘那个城市==京都的cid。如果我理解正确的话。

答案 1 :(得分:0)

SELECT o.pid FROM orders AS o INNER JOIN customers AS c ON o.pid = c.cid WHERE c.cid = "c006" ORDER BY p.pid DESC

我建议在此查询中使用内部联接。

答案 2 :(得分:0)

这可能会提供您正在寻找的内容。对于此请求:

  

"获取至少通过任何代理商订购的产品ID   来自京都的客户的一份订单,按ID从最高到最高排序   。最低"

您似乎想要一个与代理列表关联的产品列表。代理商必须至少有一份来自京都客户的订单。

SELECT pid
FROM Orders
WHERE aid IN
    (
    SELECT o.aid
    FROM Orders o
    INNER JOIN Customers c ON o.cid = c.cid
    WHERE c.city = 'Kyoto'
    )
ORDER BY pid
;

子查询返回一个代理商ID的列表,这些代理商ID与京都的客户至少有一个订单。主查询返回派生的代理列表的产品ID列表。

请参阅SQLFiddle