我有一個名爲mapunit
的表,其中有一列叫做muname
,主鍵叫做mukey
。SQL:查詢兩個表
我有另一個表SpatialJoin
,它也有主鍵爲mukey
。對於SpatialJoin
中的每一行,我想檢索相應的muname
。
我想:
SELECT muname
FROM mapunit
WHERE EXISTS (SELECT mukey FROM SpatialJoin)
,但沒有奏效。對於我如何重寫我的聲明有任何建議,將不勝感激。謝謝!
我有一個名爲mapunit
的表,其中有一列叫做muname
,主鍵叫做mukey
。SQL:查詢兩個表
我有另一個表SpatialJoin
,它也有主鍵爲mukey
。對於SpatialJoin
中的每一行,我想檢索相應的muname
。
我想:
SELECT muname
FROM mapunit
WHERE EXISTS (SELECT mukey FROM SpatialJoin)
,但沒有奏效。對於我如何重寫我的聲明有任何建議,將不勝感激。謝謝!
試試這個:
SELECT
mu.MuName, mu.mukey
FROM
SpatialJoin sj
INNER JOIN
Mapunit mu ON sj.mukey = mu.mukey
的INNER JOIN
將「加入」所定義的兩個表連接條件,現在你可以在你的SELECT
選擇兩個表中的列。 INNER JOIN
也只連接兩個表中具有該公共列的行(以及該公共列中的相同值)。
更新:從第三Component
表中獲取CompName
,試試這個:
SELECT
mu.MuName, mu.mukey, c.CompName
FROM
SpatialJoin sj
INNER JOIN
Mapunit mu ON sj.mukey = mu.mukey
INNER JOIN
Component c ON sj.mukey = c.mukey
我建議使用適當的** ANSI標準JOIN語法**('INNER JOIN ....'等),而不是以逗號分隔的方式在表格後列出表格。 ANSI語法更簡潔,並且由於缺少JOIN條件而傾向於生成更少的不需要的笛卡爾積,並且它保持WHERE條件更清晰(因爲JOIN條件是它們所屬的位置 - 在JOIN語句本身上) – 2012-03-19 08:21:03
試試這個:
SELECT b.muname
FROM SpatialJoin a INNER JOIN mapunit b
on a.mukey = b.mukey
你從mapunit採摘的所有行其中密鑰存在於SpatialJoin,不完全是你想要的。
嘗試選擇每一行從SpatialJoin來代替,而只是mapunit加入得到的名稱;
SELECT muname
FROM SpatialJoin sj
JOIN mapunit mu ON mu.mukey = sj.mukey
SELECT muname
FROM SpatialJoin s
JOIN mapunit m ON m.mukey = s.mukey
試試這個可能工作
如果您發佈代碼, XML或數據樣本,**請在文本編輯器中突出顯示這些行,然後單擊編輯器工具欄上的「代碼示例」按鈕(「{}」)以精確地格式化和語法突出顯示它! – 2012-03-19 08:49:11
我使用的是StackOverFlow Mobile Site – 2012-03-19 09:05:26
然後用四個空格縮進你的代碼行以得到相同的結果 – 2012-03-19 09:05:44
感謝您的幫助!但是現在我試圖從另一個名爲Component的表中檢索一個名爲compname的列。 Component表具有mukey作爲相對鍵,並且存在一對多關係。我如何需要更改代碼以檢索SpatialJoin中每行的計算機名稱? – 2012-03-19 09:13:36
@HelloWorld_PyNoob:更新了我的回覆 – 2012-03-19 09:15:01