SQL Server 2005/2008 条件连接
是否有条件连接之类的东西:
SELECT *
FROM TABLE1 A
IF (a=='TABLE2') THEN INNER JOIN TABLE2 B ON A.item_id=B.id
ELSE IF (a=='TABLE3') THEN INNER JOIN TABLE3 C ON A.item_id=C.id
虽然 a 是 TABLE1 中的一个字段。
我喜欢在存储过程中使用它,而不使用动态sql(不将查询编写为字符串和 EXEC(@query))。
编辑:我不能写:
IF (a=='TABLE2) THEN queryA
ELSE IF (a=='TABLE3') THEN queryB
因为 a 是 TABLE1 的一个字段。
Is there such thing like conditional join:
SELECT *
FROM TABLE1 A
IF (a=='TABLE2') THEN INNER JOIN TABLE2 B ON A.item_id=B.id
ELSE IF (a=='TABLE3') THEN INNER JOIN TABLE3 C ON A.item_id=C.id
While a is a field in TABLE1.
I like to use this in stored procedures without using dynamic sql (without writing query as string and EXEC(@query)).
EDIT: I can't write:
IF (a=='TABLE2) THEN queryA
ELSE IF (a=='TABLE3') THEN queryB
Because a is a field of TABLE1.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
编辑:根据下面的评论修改答案:
您可以尝试巧妙地使用一些左连接。这将返回更多列,因此您可能希望比
SELECT *
更具辨别力。EDIT: Modified answer based on comment below:
You could try to get clever with some left joins. This will return more columns, so you'd probably want to be more discriminating than just
SELECT *
.按要求更新了查询:
Updated the query as requried: