我試圖查詢我的數據庫以返回與輸入的郵政編碼匹配的所有建築物。我的客戶給我提供了相關主題的兩個表:如何選擇其中一個字段在多個字段中的行
buildings
+----+------------+---------------+
| id | name | building_code |
+----+------------+---------------+
| 1 | Building A | 001 |
| 2 | Building B | 002 |
| 3 | Building C | 003 |
+----+------------+---------------+
postal_codes
+----+-------------+---------+-----------+
| id | postal_code | primary | pecondary |
+----+-------------+---------+-----------+
| 1 | A1A 1A1 | 001 | 002 |
| 2 | B2B 2B2 | 002 | 003 |
| 3 | C3C 3C3 | 003 | 001 |
+----+-------------+---------+-----------+
不幸的是我,包括郵遞區號表包含重複的建築規範(A郵政編碼有一個主建築和輔助建築)
因此,當執行搜索郵政編碼爲A1A
的建築物時,我需要接收建築物A和建築物B.這本身並不是一個問題,但是我發現的唯一方法是這是否令人難以置信的龐大,並沒有留下許多選擇爲未來打樣。
SELECT * FROM buildings
WHERE (building_code IN (SELECT primary FROM postal_codes
WHERE postal_code LIKE '%A1A%')
OR
building_code IN (SELECT secondary FROM postal_codes
WHERE postal_code LIKE '%A1A%'))
我試着只是做building IN (SELECT primary, secondary FROM postal_codes)
但保持引起的錯誤。
我嘗試了你發佈的第一個代碼,它沒有工作。我找回了整個數據庫(或者至少看起來像我做過的,可能有很多重複的行)。但是,您發佈的第二個查詢完美工作(如果客戶想要爲每個郵政編碼創建第三個建築,則更新起來非常簡單)。 – Chaosxmk