[英]Select records with 2 type of sort
我在mySQL中有2个表,包含以下数据:
表格1:
id | title
-------+-----------
1 | Test 1
2 | Test 2
3 | Test 3
4 | Test 4
表2:
id | table1_id | price
-------+--------------+----------
1 | 1 | 15000
2 | 1 | 2000
3 | 1 | 32600
4 | 2 | 1000
5 | 3 | 4000
6 | 4 | 5500
7 | 2 | 3000
现在,我想按id
排序从Table 1
选择所有记录,并从Table 2
选择最大price
,所以我编写了此查询:
SELECT a.*, b.price
FROM table1 AS a, table2 AS b
WHERE a.id = b.table1_id
GROUP BY a.id
ORDER BY a.id ASC, b.price DESC
但是结果是Table 2
的第一个价格。
尝试这个:
SELECT DISTINCT a.*, MAX(b.price)
FROM table1 AS a, table2 AS b
WHERE a.id = b.table1_id
GROUP BY a.id
ORDER BY a.id ASC
您可以使用分组依据或子选择来完成(更好的解决方案,将选择不包含价格的table1记录)
SELECT
a.*,
b.price
FROM table1 AS a
LEFT OUTER JOIN
(
SELECT
table1_id,
MAX(price) AS price
FROM table2
GROUP BY table1_id
) AS b
ON b.table1_id = a.id
ORDER BY a.id ASC, b.price DESC
您需要的是第二个表上的分组最大。
SELECT a.*, b.price
FROM table1 a
JOIN table2 b ON a.id = b.table1_id
LEFT JOIN table2 b2 ON b.table1_id=b2.table1_id AND b.price<b2.price
WHERE b2.id IS NULL
ORDER BY a.id ASC;
该查询的优点是您可以从第二个表中选择所有数据,而不仅仅是最高价格。
尝试
SELECT t1 . * , MAX( t2.price )
FROM table1 t1, table2 t2
WHERE t1.id = t2.table1_id
GROUP BY t1.id
ORDER BY t1.id ASC
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.