Sql server 返回可以是多种类型的行
好的,我已经找了两天了,没有找到任何东西。我认为这是一个简单的问题,我只是因为某种原因不能把我的头绕过去 假设你有两张桌子 汽车Sql server 返回可以是多种类型的行,sql-server,Sql Server,好的,我已经找了两天了,没有找到任何东西。我认为这是一个简单的问题,我只是因为某种原因不能把我的头绕过去 假设你有两张桌子 汽车 CarID CarModel CarTypeID CarID TypeOfCar 目录类型 CarID CarModel CarTypeID CarID TypeOfCar 汽车的示例数据: CarID CarModel A Pinto B Corvette C Ferrari 目录类型的示例数据: CarTypeID Car
CarID
CarModel
CarTypeID
CarID
TypeOfCar
目录类型
CarID
CarModel
CarTypeID
CarID
TypeOfCar
汽车的示例数据
:
CarID CarModel
A Pinto
B Corvette
C Ferrari
目录类型的示例数据
:
CarTypeID CarID TypeOfCar
1 A ChickMagnet
2 A FourDoor
3 A GasGuzzler
4 B SportsCar
5 B TwoDoor
6 B GasGuzzler
7 C GasGuzzler
8 C TwoDoor
9 C ChickMagnet
Car和CarType有1对多的关系(一辆车可以有许多不同的类型)。我不能用sql来描述所有汽车都是“小鸡磁铁”和“耗油车”的情况
所需结果集:
CarID CarModel
A Pinto
C Ferrari
任何帮助都将不胜感激。我正在使用SQL Server。我可以使用“喜欢”和“文本”搜索,但希望避免这种情况 这里有一种方法:
SELECT c.CarId, c.CarModel
FROM Cars c
INNER JOIN CarTypes ct1
ON c.CarID = ct1.CarID
INNER JOIN CarTypes ct2
ON c.CarID = ct2.CarID
WHERE ct1.TypeOfCar = 'ChickMagnet'
AND ct2.TypeOfCar = 'GasGuzzler'
这里有一个方法:
SELECT c.CarId, c.CarModel
FROM Cars c
INNER JOIN CarTypes ct1
ON c.CarID = ct1.CarID
INNER JOIN CarTypes ct2
ON c.CarID = ct2.CarID
WHERE ct1.TypeOfCar = 'ChickMagnet'
AND ct2.TypeOfCar = 'GasGuzzler'
就在我的头顶上,你不能使用where CarID in()和CarID in()就在我头顶上,你不能使用where CarID in()和CarID in()你需要与这两个表进行连接,并使用where子句来选择你想要选择的汽车类型有重复的cartypeid可以吗?有两个3和7。@TrueSoft,经过编辑以更正CartypeID。您需要与这两个表进行联接,并使用where子句选择要选择的汽车类型。是否可以使用重复的CartypeID?有两个3和7。@TrueSoft,已编辑以更正CartypeId.Awesome。这对我来说很有意义。如果我继续吹出内部连接,这个比例会合适吗?比如说我想要100种类型的车。。。。更多的是出于兴趣而不是真正的需要(我最多需要4个)@OpenR-join很昂贵,所以伸缩性不是很好。如果你有少量的数据,这应该没问题。我没有投反对票,但只要斯图尔特的公式有效,随着你使用越来越多的类型,它的可伸缩性就会大大提高。但是,对于这个有限的数据集来说,这是一个清洗。这对我来说很有意义。如果我继续吹出内部连接,这个比例会合适吗?比如说我想要100种类型的车。。。。更多的是出于兴趣而不是真正的需要(我最多需要4个)@OpenR-join很昂贵,所以伸缩性不是很好。如果你有少量的数据,这应该没问题。我没有投反对票,但只要斯图尔特的公式有效,随着你使用越来越多的类型,它的可伸缩性就会大大提高。不过,对于这个有限的数据集来说,这是一个清洗。我从中学到了一些新的东西(如果聚合在Having子句中,那么groupby将起作用)。性能方面,哪一个更差:GROUPBY或多个内部联接所需的排序?事实上,分组将在大约15个不同的栏目上进行。无论是这个答案还是@Oded都有效(谢谢!),只要寻找两者中最具可伸缩性的。数据量在成千上万行中的10行中。阅读更多:@MizardX-感谢链接,它回答了我的问题。我从中学到了一些新的东西(如果聚合在Having子句中,groupby将起作用)。性能方面,哪一个更差:GROUPBY或多个内部联接所需的排序?事实上,分组将在大约15个不同的栏目上进行。无论是这个答案还是@Oded都有效(谢谢!),只要寻找两者中最具可伸缩性的。数据量在成千上万行中的10行中。阅读更多:@MizardX-感谢链接,这回答了我的问题。