mysql显示多个表中的不同列
考虑下表和值..我需要显示表“TAG”中的所有列及其值,以及另一个名为“ITEM”的表中的单列值 表名“标记” 表名称“项” 预期产量mysql显示多个表中的不同列,mysql,Mysql,考虑下表和值..我需要显示表“TAG”中的所有列及其值,以及另一个名为“ITEM”的表中的单列值 表名“标记” 表名称“项” 预期产量 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 7
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;
谁能帮我解决这个问题
提前谢谢…像这样试试
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
你可以试试看
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
如果您需要项目表中的所有数据,如您在输出中所示,您可以使用左连接而不是内部连接
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
假设上次插入的记录在项目表中具有最高的ID,则首先需要获得每个项目名称的最高ID
SELECT
Name, MAX(ITEMID) AS max_id
FROM
item
GROUP BY Name;
通过这个查询(在下面的查询中作为子查询执行),我们得到每个max\u 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;
下面是有关如何获取的更多示例
最终查询为
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
- 现场观看它的工作
SELECT i.*
FROM item i
JOIN (
SELECT
MAX(ITEMID) AS max_id
FROM
item
GROUP BY Name
) si ON i.ITEMID = si.max_id;
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