数据库查询

离愁别恨最是深 2018-06-14 09:49:57
有两个表A,B
A的字段是
A1,A2,A3,A4,A5 (字段名)
B的表结构是
B1 B2 (字段名)
A1 A1 (内容)
A2 年龄(内容)
A3 大小(内容)
A4 性别(内容)
A5 住址(内容)

怎么查询A中这些字段在B表中对应的中文名称,并不是A中所有的字段,像A1字段不用查询
...全文
1073 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
shinger126 2018-06-14
  • 打赏
  • 举报
回复
引用 楼主 qq_32886855 的回复:
有两个表A,B A的字段是 A1,A2,A3,A4,A5 (字段名) B的表结构是 B1 B2 (字段名) A1 A1 (内容) A2 年龄(内容) A3 大小(内容) A4 性别(内容) A5 住址(内容) 怎么查询A中这些字段在B表中对应的中文名称,并不是A中所有的字段,像A1字段不用查询
你的B表缺少一个表名列,否则如果有多个表的话,会对应不上
听雨停了 2018-06-14
  • 打赏
  • 举报
回复

CREATE TABLE tabA(
A1 varchar(20),A2 varchar(20),A3 varchar(20),A4 varchar(20),A5 VARCHAR(20)	
)

CREATE TABLE TabB(
B1 VARCHAR(20),B2 VARCHAR(20)	
)
INSERT INTO TabB
SELECT 'A1','A1' UNION all
SELECT 'A2','年龄' UNION all
SELECT 'A3','大小' UNION all
SELECT 'A4','性别' UNION all
SELECT 'A5','住址'
--测试数据结束


select a.name,c.B2 from sys.columns AS a
INNER JOIN sys.objects AS b ON a.[object_id]=b.[object_id]
INNER JOIN TabB AS c ON a.name=c.B1
WHERE b.name='Taba' AND c.B2 LIKE '%[吖-座]%'


name                                                                                                                             B2
-------------------------------------------------------------------------------------------------------------------------------- --------------------
A2                                                                                                                               年龄
A3                                                                                                                               大小
A4                                                                                                                               性别
A5                                                                                                                               住址

卖水果的net 2018-06-14
  • 打赏
  • 举报
回复
select * from sys.columns ,查看列信息
sheng_dh 2018-06-14
  • 打赏
  • 举报
回复
只选择包含中文的B2字段。 条件:where B2 like '%[吖-座]%' select B.B1,B.B2 from A,B where A.A=B.B1 and B.B2 like '%[吖-座]%'
BlueStorm 2018-06-14
  • 打赏
  • 举报
回复
SELECT * FROM B_TableName
  WHERE B1 NOT IN ('A1')
    AND B1 IN (SELECT a.name FROM sys.columns a, sys.tables b
                 WHERE a.object_id=b.object_id AND b.name='A_TableName')
BlueStorm 2018-06-14
  • 打赏
  • 举报
回复
WITH A_Cols AS 
  (SELECT a.name as B1 FROM sys.columns AS a INNER JOIN sys.tables AS b
     WHERE a.object_id=b.object_id
       AND b.name='A_TableName')
SELECT a.B1, b.B2
  FROM A_Cols a
  LEFT JOIN B_TableName b ON a.B1=b.B1
  WHERE a.B1 NOT IN ('A1')
BlueStorm 2018-06-14
  • 打赏
  • 举报
回复
WITH A_Cols AS 
  (SELECT a.name as B1 FROM sys.columns AS a INNER JOIN sys.tables AS b
     WHERE a.object_id=b.object_id
	   AND b.name='A_TableName')
SELECT a.B1, b.B2
  FROM A_Cols a
  LEFT JOIN B_TableName b ON a.B1=b.B1
  WHERE a.name NOT IN ('A1')
二月十六 2018-06-14
  • 打赏
  • 举报
回复
并不是A中所有的字段,像A1字段不用查询 这个规则是什么?另外楼主的数据库是mysql吗?
BlueStorm 2018-06-14
  • 打赏
  • 举报
回复
 SELECT * FROM B_TableName a, sys.columns b, sys.tables c
  WHERE B1 NOT IN ('A1')
    AND a.B1 = b.name
    AND b.object_id=c.object_id
    AND c.name = 'A1_TableName'

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧