gpt4 book ai didi

mysql - 内连接多表

转载 作者:太空宇宙 更新时间:2023-11-03 10:55:48 25 4
gpt4 key购买 nike

我有三个名为 tblStock、tblModel 和 tblAltStockPrice 的表。

tbl股票:

|------------------------------------------------------|
| StockCode | Description | StockModel |
|-------------------------|----------------------------|
| 1Y 1111 | ORING | CATERPILLAR 950 LOADER |
|-------------------------|----------------------------|
| 2K 4501 | BUSHING | CATERPILLAR 950 LOADER |
|------------------------------------------------------|

模型:

|------------------------------------|
| ModelCode | ModelDescription |
|------------------------------------|
| C950 | CATERPILLAR 950 LOADER |
|------------------------------------|

tblAltStockPrice:

|-----------------------------------------------------------|
| StockCode | Price | UpdateTime | UpdateDate |
|-------------------------|-----------------|---------------|
| 1Y 1111 | 40 | 12:52:41 | 30/12/2013 |
|-------------------------|-----------------|---------------|
| 1Y 1111 | 45 | 12:11:17 | 30/12/2013 |
|-------------------------|-----------------|---------------|
| 2K 4501 | 40 | 12:13:14 | 30/12/2013 |
|-----------------------------------------------------------|

问题:

我想检索连接这三个表的 MAX(UpdateTime) 和 MAX(UpdateDate) 记录。

我的查询是:

SELECT * FROM tblStock s 
INNER JOIN tblModel m ON s.StockModel = m.ModelDescription
INNER JOIN tblAltStockPrice asp ON s.StockCode = asp.StockCode
WHERE m.ModelCode='C950'
ORDER BY MAX(updateTime) AND MAX(updateDate)

输出是:

|----------------------------------------------------------------------------------------------------------------------|
| StockCode | Description | ModelCode | ModelDescription | Price | UpdateTime | UpdateDate |
|------------------------------|----------------|--------------------------|---------|-----------------|---------------|
| 1Y 1111 | ORING | C950 | CATERPILLAR 950 LOADER | 40 | 12:52:41 | 30/12/2013 |
|----------------------------------------------------------------------------------------------------------------------|

我的预期输出是:

|----------------------------------------------------------------------------------------------------------------------|
| StockCode | Description | ModelCode | ModelDescription | Price | UpdateTime | UpdateDate |
|------------------------------|----------------|--------------------------|---------|-----------------|---------------|
| 1Y 1111 | ORING | C950 | CATERPILLAR 950 LOADER | 40 | 12:52:41 | 30/12/2013 |
|-----------|------------------|----------------|--------------------------|---------|-----------------|---------------|
| 2K 4501 | BUSHING | C950 | CATERPILLAR 950 LOADER | 40 | 12:13:14 | 30/12/2013 |
|----------------------------------------------------------------------------------------------------------------------|

谁能纠正我的错误?谢谢。

最佳答案

您需要一个 GROUP BY 子句,以便 MAX 按股票代码聚合,而不是聚合所有行。此外,多个排序标准应该用逗号分隔,而不是 AND。最后,在您的订单中,日期应优先于时间。

SELECT * FROM tblStock s 
INNER JOIN tblModel m ON s.StockModel = m.ModelDescription
INNER JOIN tblAltStockPrice asp ON s.StockCode = asp.StockCode
WHERE m.ModelCode='C950'
GROUP BY s.StockCode
ORDER BY MAX(updateDate), MAX(updateTime)

DEMO

关于mysql - 内连接多表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20865726/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com