我不知道如何在sql中写入查询。
这是我到目前为止所尝试过的。我可以在WHERE子句中使用CASE表达式吗?
where
case
when a.book_id like 'AB%' then a.book_id = b.school_id, --1
when a.book_id like 'CB%' then a.book_id = b.college_id. --2
end
壳体1和2解释。
1-我相信很好。
2-时a.book
与字母CB开始e.g CBQ123
然后只取Q123
= b.college_id
。
b.college_id在它前面没有CB。
编辑添加例如
select
a.Name,
a.ID,
a.Due,
b.school_id,
b.college_id
from Student a and FinishedStudent b
where
case
when a.book_id like 'AB%' then a.book_id = b.school_id, --1
when a.book_id like 'CB%' then a.book_id = b.college_id. --2
end
如果a.book = CBQ111然后Q111是FinishedStudent表不CBQ11,所以我只是需要比较最后3个字符。
编辑与案例2例
when a.book_id ='CBQ111' then a.book_id(Q111) = b.college_id. --2
请提供采样数据和一个例子的结果集像[这个问题](http://stackoverflow.com/questions/12358842/how-to-get-distinct-rows-with-max-value/ )。您可以在标题中指定SQL Server,但在标记中指定MySQL和Oracle。你能澄清你正在使用哪种产品? –
为什么不能在查询的select部分做同样的事情? –
book_id为何等于school_id或college_id?我在这里看到严重的数据模型问题。此外,为什么它标记了SQL Server和Oracle?这两个平台的语法可能会有所不同。 –