mysql - MYSQL 中的 SELECT INNER JOIN SELECT by

标签 mysql join

表格:

|A    |    |B          |    |C                               |
|-----|    |-----|-----|    |-----|-----|-----------|--------|
|AKey |    |BKey |AKey |    |CKey |BKey |Date       |Result  |
|-----|    |-----|-----|    |-----|-----|-----------|--------|
|1    |    |1    |1    |    |101  |1    |2016-12-01 |F       |
|     |    |2    |1    |    |102  |1    |2016-12-01 |F       |
|     |    |3    |1    |    |103  |3    |2016-12-01 |P       |
|     |    |     |     |    |104  |1    |2016-12-01 |P       |

我尝试过这个 SQL 命令:

SELECT a.Akey, b.BKey, c.CKey, Date, Result
FROM A AS a
INNER JOIN B as b ON a.AKey=b.AKey
LEFT JOIN (SELECT * FROM C WHERE Date="2016-12-01"
ORDER BY CKey DESC
LIMIT 0, 1) AS c ON c.BKey=b.BKey
WHERE a.AKey=1

我得到的结果如下:

|AKey |BKey |CKey |Date       |Result  |
|-----|-----|-----|-----------|--------|
|1    |1    |104  |2016-12-01 |P       |
|1    |2    |NULL |NULL       |NULL    |
|1    |3    |NULL |NULL       |NULL    |



但是,如何得到如下结果?

|AKey |BKey |CKey |Date       |Result  |
|-----|-----|-----|-----------|--------|
|1    |1    |101  |2016-12-01 |P       |
|1    |2    |NULL |NULL       |NULL    |
|1    |3    |103  |2016-12-01 |P       |

最佳答案

你可能想要这样的东西:

SELECT a.Akey, b.BKey, c2.CKey, c2.Date, c2.Result 
FROM A AS a
INNER JOIN B as b ON a.AKey=b.AKey 
LEFT JOIN (
   SELECT MIN(CKey) AS min_CKey, BKey  
   FROM C 
   WHERE Date = "2016-12-01" 
   GROUP BY BKey
) AS c ON c.BKey = b.BKey 
LEFT JOIN C AS c2 ON c.BKey = c2.BKey AND c.min_CKey = c2.CKey
WHERE a.AKey=1 AND c2.Date = "2016-12-01"

您必须使用 GROUP BY 子句才能获取每个 BKey 的最小 CKey 值。然后再次加入 C 表以获取其余字段。

关于mysql - MYSQL 中的 SELECT INNER JOIN SELECT by,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41118155/

相关文章:

python - 如何将文本文件的信息放入元组中以转换为 SQL 表?

php - php 中的数据库无法连接

sql - 尝试使用带有SUM函数的INNER JOIN和GROUP BY SQL,不起作用

sql - 无法将查询从 Oracle SQL 传输到具有多个联接的 MS SQL

mysql - INNER JOIN 同一张表

php - 创建登录表单

php - 如何从 mysql/php 获取树形 View 中的记录

mysql - 获取不同条件下同一列的总和

sql - Rails 中具有多个连接的高级查询

mysql - 按性别获取活跃成员(member)