这个查询怎么写
现有十多个表,每个表都有一个相同的字段:ID。有一个基础表,其他的所有的表中的ID字段的内容在基础表中都有。现有一个问题,如何确定基础表中的某一条记录的ID号在其他的的哪个表中,用SQL语句实现。急,在线等候 问题点数:0、回复次数:5Top
1 楼pengdali()回复于 2003-09-02 08:52:34 得分 0
select * from 基础表 a join (select * from 表1 union all select * from 表2) b on a.id=b.id
Top
2 楼yujohny(踏网无痕)回复于 2003-09-02 08:52:56 得分 0
IF (SELECT COUNT(*) FROM 表1 WHERE 主ID = ID) > 0
OR (SELECT COUNT(*) FROM 表2 WHERE 主ID = ID) > 0
OR (SELECT COUNT(*) FROM 表3 WHERE 主ID = ID) > 0
OR (SELECT COUNT(*) FROM 表4 WHERE 主ID = ID) > 0
OR (SELECT COUNT(*) FROM 表5 WHERE 主ID = ID) > 0
OR (SELECT COUNT(*) FROM 表6 WHERE 主ID = ID) > 0
OR (SELECT COUNT(*) FROM 表7 WHERE 主ID = ID) > 0
OR (SELECT COUNT(*) FROM 表8 WHERE 主ID = ID) > 0
OR (SELECT COUNT(*) FROM 表9 WHERE 主ID = ID) > 0
OR (SELECT COUNT(*) FROM 表10 WHERE 主ID = ID) > 0 THEN
BEGIN
………………
ENDTop
3 楼zhouzhouzhou(人生程序)回复于 2003-09-02 08:53:19 得分 0
使用過程吧Top
4 楼yujohny(踏网无痕)回复于 2003-09-02 08:58:10 得分 0
理解错误,用函数,利用函数的返回值来判断属于哪个表(前提是ID只能是属于一个从表中,有可能共有一个ID,那就不是这样返回了)
CREATE FUNCTION shuyubiao (@ID INT)
RETURNS INT
AS
BEGIN
DECLARE @AA INT
SET @AA = 0
IF (SELECT COUNT(*) FROM 表1 WHERE 主ID = ID) > 0 THEN
SET @AA = 1
IF (SELECT COUNT(*) FROM 表2 WHERE 主ID = ID) > 0 THEN
SET @AA = 2
IF (SELECT COUNT(*) FROM 表3 WHERE 主ID = ID) > 0 THEN
SET @AA = 3
IF (SELECT COUNT(*) FROM 表4 WHERE 主ID = ID) > 0 THEN
SET @AA = 4
IF (SELECT COUNT(*) FROM 表5 WHERE 主ID = ID) > 0 THEN
SET @AA = 5
IF (SELECT COUNT(*) FROM 表6 WHERE 主ID = ID) > 0 THEN
SET @AA = 6
IF (SELECT COUNT(*) FROM 表7 WHERE 主ID = ID) > 0 THEN
SET @AA = 7
IF (SELECT COUNT(*) FROM 表8 WHERE 主ID = ID) > 0 THEN
SET @AA = 8
IF (SELECT COUNT(*) FROM 表9 WHERE 主ID = ID) > 0 THEN
SET @AA = 9
IF (SELECT COUNT(*) FROM 表10 WHERE 主ID = ID) > 0 THEN
SET @AA = 10
RETURN @AA
END
这样返回值为0则不属于任何表,1为表1,2为表2……Top
5 楼liuyun2003(流云(老老实实做人,认认真真还贷))回复于 2003-09-02 09:05:21 得分 0
支持踏网无痕。Top




