2
我有一個表'node',它有一列'nid'。該ID對應於其他三個表中的「entity_id」列。我們將稱之爲「流行」,「城市」,「國家」這三個表格。 「城市」和「州」表分別具有city_value和state_value列。根據來自三個對應表的數據刪除id表中的行
並非所有'城市'和'州'錶行在'流行'表中都有相應的'entity_id'。
從這我可以得到兩組數據。在pop表(setA)中具有和entity_id的節點和不在(setB)中的節點。
要獲得組A我這樣做:
SELECT nid FROM node
LEFT OUTER JOIN pop
ON node.nid = pop.entity_id
WHERE pop.entity_id IS NOT null
我無法弄清楚如何在「節點」從具有相同州和城市爲組A組B刪除行。
編輯:我在我的setA代碼m.entity_id,但它應該已經在WHERE行pop.entity_id。
編輯:我想我有它。
SELECT DISTINCT setB.nid FROM
(
SELECT DISTINCT AA.nid, AA.title, BB.field_dialup_number_city_value, CC.field_dialup_number_state_value FROM
(
SELECT node.nid, node.title FROM node LEFT OUTER JOIN field_data_field_dialup_number_popcode pop
ON node.nid = pop.entity_id WHERE pop.entity_id IS NOT null
) AA
INNER JOIN field_data_field_dialup_number_city BB ON AA.nid = BB.entity_id
INNER JOIN field_data_field_dialup_number_state CC ON AA.nid = CC.entity_id
) setB
INNER JOIN
(
SELECT DISTINCT A.nid, A.title, B.field_dialup_number_city_value, C.field_dialup_number_state_value FROM
(
SELECT node.nid, node.title FROM node LEFT OUTER JOIN field_data_field_dialup_number_popcode pop
ON node.nid = pop.entity_id WHERE pop.entity_id IS null
) A
INNER JOIN field_data_field_dialup_number_city B ON A.nid = B.entity_id
INNER JOIN field_data_field_dialup_number_state C ON A.nid = C.entity_id
) setA
ON setA.field_dialup_number_state_value = setB.field_dialup_number_state_value
WHERE setA.field_dialup_number_city_value = setB.field_dialup_number_city_value
我只想從「節點」當兩個組A和組B的州和城市的比賽,因爲我上面所解釋刪除行。你的第一個代碼塊會完全刪除setB。 – 2012-03-13 20:00:55
這是我陷入困境的地方。然後,我需要從** setB **中獲取城市和州,並且如果在** setA **中存在相同的城市和州組合,我將刪除與** setB **相對應的'node.nid' 'entity_id' – 2012-03-13 22:26:21
不應該存在城市,州和pop中的node.nid作爲entity_id嗎? – RolandoMySQLDBA 2012-03-13 22:52:14