我有以下表删除从多个LEFT NULL值在SQL Server JOIN
ITEM1
ID | NAME | GEARS | ITEM2_ID |
-------------------------------
1 | Test | 56 | 4 |
2 | Test2| 12 | 2 |
ITEM3
ID | NAME | DATA | ITEM2_ID |
-------------------------------
1 | Test | 1 | 1 |
2 | Test7| 22 | 3 |
ITEM2
ID | VALUE |
--------------------
1 | is simple |
2 | is hard |
3 | is different|
4 | is good |
5 | very good |
而且我的查询
SELECT TOP(3) * FROM (
SELECT ID,
rankTable.RANK as RANK_,
TOTALROWS = COUNT(*) OVER()
FROM ITEM2
INNER JOIN
CONTAINSTABLE(ITEM2, [VALUE], 'ISABOUT("good")') as rankTable
ON ITEM2.ID = rankTable.[KEY]
) as ITEM2table
LEFT JOIN (
SELECT ID,
NAME,
GEARS,
ITEM2_ID
FROM ITEM1
) as ITEM1table
ON ITEM1table.ITEM2_ID = ITEM2table.ID
LEFT JOIN (
SELECT ID,
NAME,
DATA,
ITEM2_ID
FROM ITEM3
) as ITEM3table
ON ITEM3table.ITEM2_ID = ITEM2table.ID
,结果
如何删除(如果可能的话)的第一行用上面的SQL查询(ID = 5)?另外我想显示TOTALROWS = 1,因为除了前3列以外,其他行包含NULL。
谢谢。
我的例子很简单,是一个场景,我不知道的话只属于一个表或多个表...我的数据库具有表超过10000字' ITEM2',它可能出现在ITEM1或ITEM3中 –
@Michael Swan:简单与否,你问的是如何从结果中排除第1行,因为列的“中间集合”是NULL,并且INNER JOIN是你怎么做的它。如果您的情况更加复杂,请提供一些其他详细信息,以便我们帮助您找到解决方案 - 目前,切换联接类型可以解决您所说的问题。 – SqlRyan