【问题标题】:The data type image cannot be used as an operand to the UNION, INTERSECT or EXCEPT operators because it is not comparable数据类型图像不能用作 UNION、INTERSECT 或 EXCEPT 运算符的操作数,因为它不可比较
【发布时间】:2016-12-09 08:39:05
【问题描述】:
SELECT cars.carid,cars.variant,  cars.make, cars.model, cars.condition, cars.amount,
       cars.statuss, img.img, seller.fname, seller.lname
FROM img
  INNER JOIN cars
  ON img.carid = cars.carid
  inner join seller
  on seller.sid= cars.sid
where cars.status =1
union
SELECT cars.carid,cars.variant,  cars.make, cars.model, cars.condition, cars.amount,
       cars.statuss, img.img, dealer.fname, dealer.lname
FROM img
  INNER JOIN cars
  ON img.carid = cars.carid
  inner join  dealer
  on dealer.did=cars.did
where cars.status =1

查询不工作。我想让这两个查询同时工作。

【问题讨论】:

标签: sql-server


【解决方案1】:

您应该放弃 IMAGE 数据类型,因为它目前已被弃用。

重要! ntexttextimage 数据类型将在 SQL Server 的未来版本中删除。避免在新的开发工作中使用这些数据类型,并计划修改当前使用它们的应用程序。请改用nvarchar(max)varchar(max)varbinary(max)


将表中图像列的数据类型更改为VARBINARY(MAX),或将选择查询中的图像转换为VARBINARY(MAX),以解决您的问题。

【讨论】:

    【解决方案2】:

    错误消息告诉您问题所在。如果我们采用一些横向思维,我们可以绕过它。查看您的查询,您正在尝试查找与您的卖家或经销商匹配的汽车详细信息。现在,您的查询显示“获取与卖家匹配的汽车的所有详细信息以及与经销商匹配的所有详细信息”。相反,我们可以将其写为“找到与经销商或卖家匹配的汽车 ID 列表,然后找到它们的汽车详细信息”。以下是我的写法。

    select cars.carid,cars.variant, cars.make, cars.model, cars.condition, cars.amount,
           cars.statuss, img.img, c.lname, c.fname
    from img
    join (
        select cars.carid, dealer.fname, dealer.lname
        FROM cars
        inner join  dealer
            on dealer.did=cars.did
        where status = 1
    
        union
    
        select cars.carid, seller.fname, seller.lname
        FROM cars
        inner join  seller
            on seller.sid=cars.sid
        where status = 1
    ) as c
        on img.carid = c.carid
    join cars
        on c.carid = cars.carid
    

    【讨论】:

      猜你喜欢
      • 2016-04-26
      • 2022-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-25
      • 1970-01-01
      相关资源
      最近更新 更多