我有两张桌子
表 1:A 列(varchar)
表 2:B 列(varchar)
我需要从 T2 中获取所有行,其中 ColumnB 与“ColumnA%”中的任何行“相似”。例如,T1 中的行可能是:
- Summer09
- 09秋季
而 T2 中的行可能是
- Spring09 Com101 Sec1
- Summer09 Stat400 Sec2
- Fall09 CS200 Sec3
在那种情况下,它将重新调整 Stat400 和 CS200 行。有没有办法在一条 SQL 语句中做到这一点?
我有两张桌子
表 1:A 列(varchar)
表 2:B 列(varchar)
我需要从 T2 中获取所有行,其中 ColumnB 与“ColumnA%”中的任何行“相似”。例如,T1 中的行可能是:
而 T2 中的行可能是
在那种情况下,它将重新调整 Stat400 和 CS200 行。有没有办法在一条 SQL 语句中做到这一点?
SELECT T2.*
FROM T1, T2
WHERE T1.ColumnB LIKE T2.ColumnA + '%'
或者
SELECT T2.*
FROM T1
INNER JOIN T2 ON T1.ColumnB LIKE T2.ColumnA + '%'
可能不会跑得很快。
这个问题指向一个糟糕的表格设计。 我的好朋友科德总是说:不要将多条信息合并到一个列中!
t1 coulm 应该被拆分,因此学期和/或年份应该是他们自己的列,其中包含 t2 表的 FK,可以使用索引找到班级信息,而不是慢 LIKE!