[英]How do i select all in TABLE1 and join with matching MAX(id) from TABLE2?
我想將 TABLE1 與 TABLE2 連接起來,但只能在 TABLE2 中獲得最高的 id 匹配。 TABLE1 將始終只有 1 次出現,而 TABLE2 將有多次出現,我只想要具有最高 id 的行。
示例:
表1:
+----+------+
| id | name |
+----+------+
| 1 | a |
+----+------+
表2
+----+-----------+------+-------+-------+
| id | table1_id | text | user1 | user2 |
+----+-----------+------+-------+-------+
| 1 | 1 | aaa | 1 | 2 |
+----+-----------+------+-------+-------+
| 2 | 1 | bbb | 2 | 1 |
+----+-----------+------+-------+-------+
這就是我想得到的:
+-----------+-----------+-----------+------+------+
| table1.id | table2.id | table1_id | text | name |
+-----------+-----------+-----------+------+------+
| 1 | 2 | 1 | bbb | a |
+-----------+-----------+-----------+------+------+
我試過這個:
SELECT * FROM table1 LEFT JOIN table2 ON table1.id = table2.table1_id WHERE user1 = '1' OR user2 = '1'
輸出是:
+-----------+-----------+-----------+------+------+
| table1.id | table2.id | table1_id | text | name |
+-----------+-----------+-----------+------+------+
| 1 | 1 | 1 | aaa | a |
+-----------+-----------+-----------+------+------+
但是他給了我 TABLE2 中 ID 最低的行,我想要 ID 最高的行。 我該怎么做?
一種方法將“最大”條件放在ON
子句中:
SELECT t1.*, t2.*
FROM table1 t1 LEFT JOIN
table2 t2
ON t1.id = t1.table1_id AND
t2.id = (SELECT MAX(tt2.id) FROM table2 tt2 WHERE tt2.table1_id = t2.table1_id)
WHERE 1 IN (t1.user1, t1.user2);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.