我有两张桌子
表1: ColumnA(varchar)
表2: ColumnB(varchar)
我需要从T2获取所有行,其中ColumnB与“ColumnA%”中的任何行“相似”。例如,T1中的行可能是:
而T2中的行可能是
在这种情况下,它将重新调整Stat400和CS200行。有没有办法在单个SQL语句中执行此操作?
答案 0 :(得分:4)
SELECT T2.*
FROM T1, T2
WHERE T1.ColumnB LIKE T2.ColumnA + '%'
或
SELECT T2.*
FROM T1
INNER JOIN T2 ON T1.ColumnB LIKE T2.ColumnA + '%'
可能不会跑得很快。
答案 1 :(得分:2)
这个问题指的是一个糟糕的桌面设计。我的好朋友Codd总是说:不要将多条信息组合成一列!
t1 coulm应该被拆分,所以学期和/或年份应该是他们自己的列,其中有一个FK到t2表,其中可以使用索引找到类信息,而不是慢的LIKE !!