数据库表A如何关联另一个表某字段最大值对应的内容

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库表A如何关联另一个表某字段最大值对应的内容相关的知识,希望对你有一定的参考价值。

比如有表A,表B,A表是卡号 kid,姓名 name,B表是,卡号 kid,消费时间 time ,消费商品 item,商品单价price,数量 num等等。
我想通过A表的卡号关联B表卡号,并且只显示消费时间这一字段最大的那一行的数据。
我现在只能用
select * from A a left join B b on a.kid=b.kid and (b.kid,b.time) in (select c.kid,max(c.time) from B c where c.kid=a.kid group by c.kid)
这种写法太复杂,有没有简便的方法

SELECT 全部字段
  FROM (SELECT 全部字段,
               --根据A.KID分组后按照B.TIME倒序编号
               ROW_NUMBER() OVER(PARTITION BY A.KID ORDER BY B.TIME DESC) RNO
          FROM A A
          LEFT JOIN B B
            ON A.KID = B.KID) C
 --去编号为一的数据,也就是时间最大的那一行数据
 WHERE C.RNO = 1;

看起来不复杂的倒是没有,效率高一点的倒是有一个
参考技术A 差不多就是这样的,没有再简单的。

SQL怎么把一个表字段信息(ID)修改为对应另一个表的内容

A表 B表

A表、B表都有address_ID这一列,B表中的addressname是address_ID对应的具体内容。请问,如何将A表中的address_ID改为B表中对应的addressname?
1楼、2楼你们的回答确定是sql sever上的语句吗??

 

 

 

-- 先更改A表中列的数据类型

ALTER TABLE A ALTER COLUMN address_ID VARCHAR(128)

 

-- 开始联接查询,条件更新

UPDATE a

SET  a.address_ID = b.addressname

FROM a, b

WHERE a.address_ID = b.address_ID

SELECT  *  FROM a

 

 

 

参考技术A 呵呵,楼上的update语句里,连B表都没有,不报错就怪了。

update A set A.address_id = (select B.addressname from B where B.address_id = A.address_id)

执行之前,确认A表address_id字段的类型和长度。
参考技术B update a set a.address_id = b.addressname where a.address_id=b.addree_id

执行语句前最好检查a.address_id 的长度是否和b.addressname一致,最好大于等于后者,这样转换后信息不丢失。
另外,要求a.address_id为字符型。追问

update A set A.address_id = B.addressname where A.address_id=B.address_id

为什么报错啊

能留个联系方式吗 详谈~~

追答

不好意思,没验证。现在把经过验证的给你。在sql2000,2005,2008上通过
UPDATE a
SET address_id = c.addressname
FROM a INNER JOIN
(SELECT address_id, addressname
FROM b) AS c ON a.address_id = c.address_id
绝对不报错。
注意a表address_id 为字符型,且宽度足够

参考技术C update A表 set A表.address_Id=B表.addressname from B表 where A表.address_ID=B表.address_Id 参考技术D --查询时翻译字段
select A.address_ID,B.addressname from A,B where A.address_ID = B.address_ID

go

--真正update表A
alter table A alter column address_ID varchar(128)

update A set A.address_id = B.addressname where A.address_id=B.addree_id追问

update A set A.address_id = B.addressname where A.address_id=B.address_id

为什么报错啊
能留个联系方式吗 ? 详谈~~

追答

我晕,纯属失误,这句应该没问题了

update a set a.address_ID = b.addressname from a,b where a.address_ID = b.address_ID

以上是关于数据库表A如何关联另一个表某字段最大值对应的内容的主要内容,如果未能解决你的问题,请参考以下文章

如何将mysql数据库中某表某字段的数据批量导入到另外一个数据库指定表指定字段中

-- 使用当前(子表)表某字段更新 对应行记录其他字段 (存在主子表关系) left join

-- 使用当前(子表)表某字段更新 对应行记录其他字段 (存在主子表关系) left join

-- 使用当前(子表)表某字段更新 对应行记录其他字段 (存在主子表关系) left join

两个表,一个表中的两列关联另一个表的id,如何将这个表中的两列显示为另一个表id对应的内容

MYSQL 数据库2张表关联查询问题