【问题标题】:Using SQL to perform a match and index function使用 SQL 执行匹配和索引功能
【发布时间】:2018-10-05 08:01:53
【问题描述】:

我正在尝试创建一个新表(表 B),我将在其中输入“S/N”列的值,默认情况下,当它与 S/ 中的值匹配时,它将返回表 A 中的相应值N.

表A

序列号内容

1 个

2 乙

3C

4 天

表 B

序列号内容

2
1
3

我是 SQL 新手,如果您能展示如何创建表 B 的代码,将不胜感激。

【问题讨论】:

  • 你是什么意思default it will match against Table A ,我不确定你的插入逻辑是什么
  • 我已经修改了我的问题,现在应该更清楚了。
  • 在 SQL 中阅读外键和连接

标签: sql-server create-table


【解决方案1】:
IF OBJECT_ID ('dbo.TableA')IS NOT NULL
DROP TABLE TableA
IF OBJECT_ID ('dbo.TableB')IS NOT NULL
DROP TABLE TableB

CREATE Table TableA ([S/NContent] VARCHAR(20))
INSERT INTO  TableA
SELECT '1 A' UNION ALL
SELECT '2 B' UNION ALL
SELECT '3 C' UNION ALL
SELECT '4 D'

SELECT SUBSTRING([S/NContent],1,PATINDEX('%[0-9]%',[S/NContent])) AS [S/NContent] INTO TableB
FROM TableA

SELECT * FROM TableA
SELECT * FROM TableB

【讨论】:

  • 我认为你错了,表 A 包含两列(S/N 和内容)。我正在尝试创建表 B。例如,当我在表 B 中输入 3 时,它将为表 B 的列内容返回 C。
【解决方案2】:

据我了解的问题 您是在询问 SQL 中的关系吗?如果SN是A中的主键,则引用B中的SN列作为主键。

create table A (
    SN int primary key,
    Content varchar(10)
)

create table B (
    --dunno what the primary key will be
    SN int foreign key references A(SN),
    Content varchar(10)
)

这里是如何使用它。您在外键上加入两个表

select *
from B 
join A on A.SN = B.SN

【讨论】:

    猜你喜欢
    • 2021-05-25
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 2013-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-05
    相关资源
    最近更新 更多