我有两张桌子,一个 “已登记表” 和一个 “客户表”。
我只想显示 Customer Table 上的所有记录,其中 Customer table 上的 enrolled_no 与 “Enrolled Table”上的 enrolled_no 匹配。
通过匹配两个表中的 enrolled_no 列,选择客户表中的所有记录。
假设: 在客户表上,enrolled_no 列显示已注册表
中的 enrolled_no 的最后 7 个字符或 8 个字符的长度我遇到的问题是在Customer表上,因为enrolled_no列显示了最后7个字符或最后8个字符的长度,我如何编写一个查询来匹配Customer表中的enrolled_no到Enrolled表。
报名表
客户 ID | 已注册_否 |
---|---|
客户1 | 123a233e0000001 |
客户2 | 323a262e0000002 |
客户3 | 854a222e0000003 |
客户表
客户 ID | 产品 | 已注册_否 |
---|---|---|
客户1 | 产品1 | e0000001 |
客户2 | 产品2 | 0000002 |
客户3 | 产品3 | 0000003 |
客户4 | 产品4 | 娜 |
所需输出
客户 ID | 产品 | 已注册_否 |
---|---|---|
客户1 | 产品1 | e0000001 |
客户2 | 产品2 | 0000002 |
客户3 | 产品3 | 0000003 |
我已经尝试过以下方法,但想检查是否有更好的方法来编写查询
with enrolled_table AS (
SELECT
customer_id,
SUBSTR(enrolled_no,-8) AS enrolled8,
SUBSTR(enrolled_no,-7) AS enrolled7,
FROM enrolled
)
SELECT*
FROM customer c
WHERE (
c.enrolled_no in ( select enrolled7 from enrolled )
or
c.enrolled_no in ( select enrolled8 from enrolled)
)
尝试
SELECT c.customer_id,c.product, enrolled_no
FROM customer c
inner join enrolled e
on SUBSTR(e.enrolled_no,-8)=c.enrolled_no
or SUBSTR(e.enrolled_no,-7)=c.enrolled_no