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

试试这个(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 回答
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 回答