我是SQL的初学者。我想执行此查询,但执行它有困难。 “提供与琼斯属于同一城市的所有供应商的S#和SNAME?(琼斯独家)”。表低于
答案 0 :(得分:5)
希望我能正确理解你的问题。
请查看以下查询。
select s# , sname
from S
where city in (select city from S where sname='Jones')
and sname<>'Jones';
答案 1 :(得分:1)
问题实际上是问你两件事:琼斯与哪个城市有关?显然巴黎。现在我们知道了这一点,下一个问题(首先是显示,但你必须在里面思考),是巴黎城市所有行的S#和SNAME。
因此,您可以先执行SELECT CITY FROM S WHERE SNAME = "Jones"
,保存结果并在下一个查询中使用SELECT S#, SNAME FROM S WHERE CITY = "The results of your last query"
我们可以将其浓缩为
SELECT S#, SNAME FROM S WHERE CITY = (SELECT CITY FROM S WHERE NAME = "JONES")
由于查询不包括琼斯,您只需添加
即可AND NAME != "JONES"
答案 2 :(得分:0)
您可以通过多种方式完成此任务。到目前为止发布的所有答案都是完全有效的,并且可以正常工作;但也有其他选择。就个人而言,我会使用自我加入:
list2 = {z[0]: z[1].strip() for z in list(map(lambda i: i.split(":"), list1))}