私はこれを完全にお勧めしません!!! しかし、私はそれが良い挑戦だと思いました。ショーンの推奨に従って、キーを使用してこれを行うことを強くお勧めします。
とにかく、このクエリは、スキーマを変更せずに、要求したものを正確に提供します(データが正確に表現されていることも前提としています)。
例:http ://www.sqlfiddle.com/#!3/a0486/8
Select Distinct
case when town = 'Wilmington' Then NULL else Name end as Name,
case when town = 'Wilmington' Then NULL else Age end as Age,
Country,
Town
FROM People, Places
Where
(Name = 'Anne' AND Town = 'Berlin')
OR (Name = 'Dave' AND Town = 'Kyoto')
OR (Name = 'Mike' AND Town = 'Lisbon')
OR (Town = 'Wilmington')
Order By Country Asc
編集
私の答えを完成させ、より適切な解決策を提供するために、両方のテーブルにPlaceIDを追加してから、左結合することをお勧めします。
例:http ://www.sqlfiddle.com/#!3 / d5ee8 / 3
Create Table People(
Name varchar(255),
Age int,
PlaceID int
)
Create Table Places(
PlaceID int,
Country varchar(255),
Town varchar(255)
)
Insert Into People Values ('Dave', 43, 2)
Insert Into People Values ('Anne', 25, 1)
Insert Into People Values ('Mike', 58, 3)
Insert Into Places Values (1, 'Ger', 'Berlin')
Insert Into Places Values (2, 'Jpn', 'Kyoto')
Insert Into Places Values (3, 'Por', 'Lisbon')
Insert Into Places Values (4, 'USA', 'Wilmington')
Select
Name, Age, Country, Town
FROM
Places
Left Join People On Places.PlaceID = People.PlaceID