SQL子查询,列名无效

SQL子查询,列名无效,sql,sql-server,Sql,Sql Server,TSQL显示:列名'VehicleId'无效 SELECT (SELECT dbo.Vehicles.Id FROM dbo.Vehicles JOIN dbo.Movements ON dbo.Vehicles.Id=dbo.Movements.VehicleId WHERE dbo.Movements.Id=dbo.Alarms.MovementId) As VehicleId FROM [dbo].[Alarms] WHERE VehicleId =1 有什么问题吗?试试这个

TSQL显示:列名'VehicleId'无效

SELECT 
(SELECT dbo.Vehicles.Id FROM dbo.Vehicles JOIN dbo.Movements 
ON dbo.Vehicles.Id=dbo.Movements.VehicleId 
WHERE dbo.Movements.Id=dbo.Alarms.MovementId) As VehicleId
FROM [dbo].[Alarms] 
WHERE 
VehicleId =1
有什么问题吗?

试试这个

SELECT Alarms.*
from 
(SELECT dbo.Vehicles.Id FROM dbo.Vehicles JOIN dbo.Movements 
ON dbo.Vehicles.Id=dbo.Movements.VehicleId 
WHERE dbo.Movements.Id=dbo.Alarms.MovementId) As VehicleId
join  [dbo].[Alarms] 
on VehicleId.ID = Alarms.vehicleID
WHERE 
VehicleId =1

报警
没有名为
VehicleId的列

where子句不使用别名

SELECT 
(SELECT dbo.Vehicles.Id FROM dbo.Vehicles JOIN dbo.Movements 
ON dbo.Vehicles.Id=dbo.Movements.VehicleId 
WHERE dbo.Movements.Id=dbo.Alarms.MovementId) As VehicleId
FROM [dbo].[Alarms] 
WHERE 
VehicleId = 1 -- this is wrong
与其使用相关子查询,不如尝试多个联接

SELECT dbo.Vehicles.Id 
FROM dbo.Vehicles 
JOIN dbo.Movements 
ON dbo.Vehicles.Id = dbo.Movements.VehicleId 
JOIN dbo.Alarms
ON dbo.Alarms.MovementId = dbo.Movement.Id
WHERE dbo.Movements.VehicleId = 1

我想,你在寻找这样的东西:

SELECT Alarms.*
FROM dbo.Vehicles JOIN 
        dbo.Movements ON dbo.Vehicles.Id=dbo.Movements.VehicleId JOIN
        dbo.Alarms ON dbo.Movements.Id=dbo.Alarms.MovementId
WHERE VehicleId =1

你到底想做什么?请向我们展示模式向我们展示您表的模式,以便我们更好地理解它try xtable.VehicleId=1我认为您不能在
where
子句中使用
select
中的别名