检查内连接表是否存在

时间:2013-06-11 08:19:51

标签: mysql sql sql-server

我的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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

正如唐所说,做一个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

但您的要求可能特别吗? 希望这有帮助!