使用联合和分组方式的SQL查询
查询:使用联合和分组方式的SQL查询,sql,sql-server-2005,Sql,Sql Server 2005,查询: SELECT max(image_url), Model_Name FROM ( SELECT max(image_url), Model_Name FROM dbo.proinfo_vodafone WHERE Brand_name='Nokia' UNION SELECT max(image_url), Model_Name FROM dbo.proinfo_3 WHERE Brand_name='Nokia' UNION S
SELECT max(image_url), Model_Name
FROM (
SELECT max(image_url), Model_Name
FROM dbo.proinfo_vodafone WHERE Brand_name='Nokia'
UNION
SELECT max(image_url), Model_Name
FROM dbo.proinfo_3 WHERE Brand_name='Nokia'
UNION
SELECT max(image_url), Model_Name
FROM dbo.proinfo_t WHERE Brand_name='Nokia'
UNION
SELECT max(image_url), Model_Name
FROM dbo.proinfo_o2 WHERE Brand_name='Nokia'
UNION
SELECT max(image_url), Model_Name
FROM dbo.proinfo_orange
WHERE Brand_name='Nokia') AS temp
WHERE Model_Name IS NOT NULL
GROUP BY Model_Name
ORDER BY Model_name ASC
给出错误:Msg 8155,16级,状态2,第3行
没有为“temp”的第1列指定任何列
现在,老实说,我不擅长SQL,我在一个类似的查询中使用Quick Replace进行了这个查询,我似乎无法理解查询的错误
请帮忙!
提前谢谢
Anchit您的模型看起来已非规范化。为什么您没有一个
proinfo
表,其中包含具有某种provider
-列的所有提供者,该列将作为提供者
-表的引用(包含沃达丰
,3
,…)?这将为你省去工会的麻烦。好吧,让我们说我是新来的,这就是我得到的,整个网站都是根据这个模式设计的你能描述一下这个问题的作用吗?彼得·朗先生,谢谢你为我提供了一条减少工会麻烦的途径。我已经创建了这种类型的表,但它没有image\u url列,所以现在我将使用查询在该表中插入image\u url列。是的,将MAX()列别名为something先生,在您的子查询中没有model\u name的聚合函数,MAX(image\u url)image\u url将计算什么\是的,先生,现在我知道我遗漏了什么,我使用了您的查询,虽然我还在每个子查询中添加了GROUP BY Model_Name
子句,但它现在可以正常工作了。虽然我现在会像Peter Lang先生在对我的问题的评论中所建议的那样使用此查询创建一个新表,但这将节省每次应用联合所需的带宽。
SELECT MAX(image_url), Model_Name
FROM (SELECT MAX(image_url) image_url, Model_Name
FROM dbo.proinfo_vodafone
WHERE Brand_name = 'Nokia'
UNION
SELECT MAX(image_url) image_url, Model_Name
FROM dbo.proinfo_3
WHERE Brand_name = 'Nokia'
UNION
SELECT MAX(image_url) image_url, Model_Name
FROM dbo.proinfo_t
WHERE Brand_name = 'Nokia'
UNION
SELECT MAX(image_url) image_url, Model_Name
FROM dbo.proinfo_o2
WHERE Brand_name = 'Nokia'
UNION
SELECT MAX(image_url) image_url, Model_Name
FROM dbo.proinfo_orange
WHERE Brand_name = 'Nokia') AS temp
WHERE Model_Name IS NOT NULL
GROUP BY Model_Name
ORDER BY Model_name ASC