2
我試圖在兩個表中運行查詢。讓我們簡化和說,他們在查詢中保留不匹配的數據
表1
| Name | Type |
+---------+------+
| Sam | A |
| Jane | A |
| Steve | B |
表2
| Name | Value | Date |
+---------+-------+------+
| Sam | 2 | 2014 |
| Jane | 2 | 2013 |
| Sam | 1 | 2013 |
| Steve | 1 | 2013 |
我想要的人患有A型列表,很簡單:
SELECT name FROM table1 WHERE type='A'
這給
Sam
Jane
如預期。我還希望包括他們最近從表2日期:
SELECT name, MAX(date)
FROM table1
LEFT JOIN table2 USING(name)
WHERE type='A'
GROUP BY name
這給
Sam 2014
Jane 2013
但我不希望包括表2中的項目,除非他們有值1:
SELECT name, MAX(date)
FROM table1
LEFT JOIN table2 USING(name)
WHERE type='A' && value = 1
GROUP BY name
哪給出
Sam 2013
但在這裏我想保留所有匹配的名稱,如下所示:
Sam 2013
Jane NULL
我該怎麼做?我應該提到,即使輸出不是(幾百),所涉及的兩個表都很大,所以效率是一個問題,儘管不是一個大問題。
精美簡單。謝謝! – Charles 2014-09-18 20:25:58
@Charles - 非常歡迎您! – sgeddes 2014-09-18 21:34:59