0

私の tbl_module は空の ID で構成されている可能性があります。チェックを実行したいのですが、エラーが返され、クエリが機能しません。

SET @IID = 1
SELECT t1.ID, t1.Module FROM tbl_user t1

私の問題はここから始まりました。以前のクエリに参加できません。これがクエリを実行する違法な方法であることはわかっていますが、誰かが私を修正したり、教えてくれたりできますか?

IF EXISTS(SELECT t2.ID FROM tbl_Module t2 where @IID = t2.id)
BEGIN
  INNER JOIN tbl_Module t2 where t1.id = t2.id
 END
4

2 に答える 2

1

Don が言ったように、LEFT JOIN を実行するのがより一般的です。これは、その ID を持つモジュールが存在しない場合、列 t1.Module に NULL を入れるだけです。

SELECT t1.ID, t1.Module FROM tbl_user t1
LEFT JOIN tbl_Module t2 where t1.id = t2.id

しかし、あなたの要件は特別かもしれません? お役に立てれば!

于 2013-06-11T08:29:27.413 に答える
1

これを試してください(MS SQL)-

DECLARE @SQL NVARCHAR(MAX)
SELECT @SQL = '
SELECT * 
FROM dbo.tbl_user t1
' + CASE WHEN OBJECT_ID('dbo.tbl_Module') IS NOT NULL 
        THEN 'JOIN dbo.tbl_Module t2 ON t1.id = t2.id' 
        ELSE ''
    END

PRINT @SQL
EXEC sys.sp_executesql @SQL
于 2013-06-11T08:23:24.103 に答える