嗨,我已经包含了我的桌子的图像,我想做的是select top 6 from product detail whose state=1
处于超级状态。任何帮助将不胜感激 。我想的是:
Select TOP 6 [productName] As test, [productDetail] AS test1
From [productDetail]
INNER JOIN test ON productDetail.makeID = feautureState.makeID
Where feautureState.state='1';
但它不起作用:(
答案 0 :(得分:4)
加入表名而不是列名
Select TOP 6 [productName] As test, [productDetail] AS test1
From [productDetail]
JOIN [featureState] ON productDetail.makeID=feautureState.makeID
Where feautureState.state='1';
答案 1 :(得分:2)
这应该有效。
另外,是状态字符串还是整数?
Select top 6 pd.ProductName,pd.ProductDetail
from dbo.ProductDetail pd
inner join dbo.FeatureState fs on pd.makeid=fs.makeid
where fs.state=1
答案 2 :(得分:2)
Select top 6 pd.productName, pd.productDetail
from productDetail pd
Inner Join feautureState fs on fs.makeID = pd.makeID
where fs.state = 1
答案 3 :(得分:1)
SELECT TOP 6
pd.productName,
pd.productDetail
FROM dbo.productDetail pd
INNER JOIN dbo.featureState fs on fs.makeID = pd.makeID
WHERE fs.makeID = 1
答案 4 :(得分:1)
INNER JOIN“test” - >这不是一张表
答案 5 :(得分:1)
您的内部联接是指未在架构图中指定的“测试”实体。这是“清理”此查询中的错误还是您实际运行的?如果是后者,那就是你的问题;它可能应该是“featureState”。
答案 6 :(得分:1)
您的内部联接应该说您要加入的表名。另外,我的猜测是state是int,而不是varchar,因此不需要引号。
Select TOP 6 [productName], [productDetail]
From [productDetail]
INNER JOIN featureState ON productDetail.makeID = feautureState.makeID
Where feautureState.state = 1;
答案 7 :(得分:1)
正如其他人所说,您可以使用以下内容更正您的查询。
SELECT TOP 6 [productName] As test, [productDetail] AS test1
FROM [productDetail]
INNER JOIN featureState ON productDetail.makeID = feautureState.makeID
WHERE feautureState.state='1';
但是,您需要指定ORDER BY
子句,否则您获得的结果将无法预测。
同样从您的架构图中,您与ProductDetail
和FeatureState
建立了一对一的关系,也许状态标志应该是ProductDetail
表中的一列?但您可能只提供数据库的简化版本。
编辑----回应评论。
要将列添加到现有表,假设您有数据。
ALTER TABLE ProductDetail
ADD FeatureState BIT NULL
或者您可以设置为not null并为所有现有行提供默认值
ALTER TABLE ProductDetail
ADD FeatureState BIT NOT NULL CONSTRAINT [DF_ProductDetail_FeatureState] DEFAULT (0)
答案 8 :(得分:-1)
以下声明是您问题的解决方案之一。
选择前6名* 来自dbo.productDetail makelid in (选择makelid 来自dbo.feautureState 其中State = 1 )