-1

选择作为另一个表列值的列。这个查询有什么问题

select 
    geoName 
from 
    hgeo h 
where 
    geoName not in (select (select column_name 
                            from information_schema.columns 
                            where ((column_name = h.levelName) and (table_Name = 'flatgeo'))) 
                    from flatgeo)

我觉得有问题

(select 
     (select column_name 
      from information_schema.columns 
      where ((column_name = h.levelName) and (table_Name = 'flatgeo')))

怎么写?

4

3 回答 3

1

您不能使用元信息来更改查询的形状。除非你想走动态 sql 路线(这会很快变得复杂),否则我会选择以下方法:

SELECT
    geoName
FROM hgeo h
WHERE
    NOT EXISTS (SELECT * FROM flatgeo f
      WHERE
      (h.levelName = 'value1' and f.value1 = h.geoName) OR
      (h.levelName = 'value2' and f.value2 = h.geoName)
      //Repeat for each possible levelName value.
    )
于 2013-01-08T09:01:17.410 回答
1

你可以试试这个

select GeoName from HGeo where HGeo.GeoName not in 
(select FlatGeo.value1 from FlatGeo union
select FlatGeo.value2 from FlatGeo union
select FlatGeo.value3 from FlatGeo)
于 2013-01-08T09:12:19.290 回答
0

你应该tablename在你的专栏之前使用geoname。喜欢hgeo.geoname。你想找出那些不在的geoname吗?hgeoflatgeo

于 2013-01-08T08:52:25.493 回答