考虑下面的表和值...我需要显示表“TAG”中的所有列及其值以及另一个名为“ITEM”的表中的单列值
表名“标签”
TAGID NAME RATE
1 A 100
2 B 200
3 C 300
4 D 8099
5 E 400
6 F 500
7 G 600
8 H 700
9 I 200
10 J 400
表名“项目”
ITEMID Name ITEM_QTY
1 A 11
2 B 22
3 I 3
4 A 8
5 B 42
6 C 5
7 I 61
8 B 74
9 C 99
10 A 48
预期输出
TAGID NAME RATE ITEM_QTY
1 A 100 48 - (VALUE OF LAST INSERTED RECORD)
2 B 200 74
3 C 300 99
4 D 8099 0
5 E 400 0
6 F 500 0
7 G 600 0
8 H 700 0
9 I 200 61
10 J 400 0
我已经尝试过某种形式的问题,但它的所有情况都是...
这是我的查询,
select *
from tag t1
join ( select item_qty
from item t2
join tag t1
on t1.name=t2.name;
任何人都可以帮我解决这个问题...
提前感谢...
答案 0 :(得分:0)
试试这个
select tag.id,tag.name,rate,qty from tag join
(select qty,name from
ITEM where ITEM.id in
(select max(id) from ITEM group by name)) as tt on tt.name=tag.name
答案 1 :(得分:0)
您可以尝试
select
t.tagid,
t.name,
t.rate,
i.item_qty
from tag t
join
(
select name,max(item_qty) as item_qty
from item group by name
)i
on i.name = t.name
<强> DEMO 强>
如果您需要输出中显示的项目表中的所有数据,则可以使用左连接而不是内部连接
select
t.tagid,
t.name,
t.rate,
coalesce(i.item_qty,0) as item_qty
from tag t
left join
(
select name,max(item_qty) as item_qty
from item group by name
)i
on i.name = t.name
<强> DEMO 强>
答案 2 :(得分:0)
假设最后插入的记录在您的项目表中具有最高ID,您首先需要获得每个项目名称的最高ID。
SELECT
Name, MAX(ITEMID) AS max_id
FROM
item
GROUP BY Name;
使用此查询(在以下查询中作为子查询执行),我们为每个max_id获取相应的行。
SELECT i.*
FROM item i
JOIN (
SELECT
MAX(ITEMID) AS max_id
FROM
item
GROUP BY Name
) si ON i.ITEMID = si.max_id;
以下是有关如何获取 The Rows Holding the Group-wise Maximum of a Certain Column 的更多示例。
最终查询
SELECT TAGID, tag.NAME, RATE, COALESCE(ITEM_QTY, 0) AS ITEM_QTY
FROM
tag
LEFT JOIN (
SELECT i.*
FROM item i
JOIN (
SELECT
MAX(ITEMID) AS max_id
FROM
item
GROUP BY Name
) si ON i.ITEMID = si.max_id
) items ON tag.Name = items.Name