kac*_*apy 4 sql-server-2005 sql-server
我有两个表:Message和Attachments(代表具有一对多关系的实体类型)如下:
CREATE TABLE message (
messageId ...,
[from]...,
[to]...,
subject...,
body...
);
CREATE TABLE attachments (
messageId...,
filename...
);
Run Code Online (Sandbox Code Playgroud)
我想选择基本消息数据并包含一个位列来表示消息是否有附件。我正在尝试在如下所示的操作中使用 EXISTS:
SELECT
M.*,
hasAttachments = EXISTS(SELECT AttachmentId
FROM Attachment
WHERE messageId = M.messageId),
FROM Message M
Run Code Online (Sandbox Code Playgroud)
但这不起作用 - 有什么方法可以做我正在寻找的东西?
我会用 CASE 语句来做:
select
m.*,
hasAttachments = CASE WHEN EXISTS(select * from Attachment where messageId = M.messageId) then 1 else 0 end
from Message M
Run Code Online (Sandbox Code Playgroud)
或者
select distinct
m.*,
hasAttachments = CASE WHEN a.AttachmentId is not null then 1 else 0 end
from Message m
left join Attachment a on a.MessageId = m.MessageId
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
27563 次 |
| 最近记录: |