有两个表,结构分别如下:
orders(order_id,order_name)
数据为:
1,订单1
order_product(product_id,product_name,order_id)
1,产品1,1
2,产品2,2orders表与order_product表是一对多的关系现在我要查找记录:
select o.order_id,p.product_name from orders o left join order_product p on o.order_id=p.order_id
这样将会得到两条记录
1,产品1
1,产品2但现在我业务要求,不管订单对应几个产品,只显示第一个产品信息,要求得到的记录如下:
1,产品1请问这条语句怎么写????????????????我尝试用:
select distinct(o.order_id),p.product_name from orders o left join order_product p on o.order_id=p.order_id
得到的还是两条记录select distinct(o.order_id from orders o left join order_product p on o.order_id=p.order_id
这样得到的就是一条记录,但我一定要列出产品名称,所以这种方式也不行
orders(order_id,order_name)
数据为:
1,订单1
order_product(product_id,product_name,order_id)
1,产品1,1
2,产品2,2orders表与order_product表是一对多的关系现在我要查找记录:
select o.order_id,p.product_name from orders o left join order_product p on o.order_id=p.order_id
这样将会得到两条记录
1,产品1
1,产品2但现在我业务要求,不管订单对应几个产品,只显示第一个产品信息,要求得到的记录如下:
1,产品1请问这条语句怎么写????????????????我尝试用:
select distinct(o.order_id),p.product_name from orders o left join order_product p on o.order_id=p.order_id
得到的还是两条记录select distinct(o.order_id from orders o left join order_product p on o.order_id=p.order_id
这样得到的就是一条记录,但我一定要列出产品名称,所以这种方式也不行
orders 表
order_id,order_reig_id
数据如下:
1,1
2,1
3,1
4,2
5,2
我现在要显示order_reig_id中的第一个order_id,显示记录应如下:
1,1
4,2
请问此条语句怎么写,求高手指教????????????
from orders o,order_product p
where o.order_id = p.order_id--你上面的这个又是什么玩意啊?orders表的结构怎么又变了,啥乱七八糟的啊?先自己捋清楚了再问
SELECT '1' order_id ,'订单1' order_name
FROM dual
UNION ALL
SELECT '2' order_id ,'订单2' order_name
FROM dual
) ,
order_product AS(
SELECT
'1'product_id ,'产品1' product_name,'1'order_id FROM dual
UNION ALL
SELECT '2' ,'产品2','2' FROM dual
UNION ALL
SELECT '2' ,'产品2','1' FROM dual
UNION ALL
SELECT '1' ,'产品1','2' FROM dual
)
SELECT order_id,product_name
FROM(
SELECT orders.order_id, order_product.product_name, rank() over(PARTITION BY orders.order_id ORDER BY orders.order_id,order_product.product_id ) rn_
FROM order_product, orders
WHERE orders.order_id = order_product.order_id) a
WHERE a.rn_ = 1第二个sql语句思想和这个一样,稍微改一下即可!
WITH orders AS(
SELECT '1' order_id ,'订单1' order_name
FROM dual
UNION ALL
SELECT '2' order_id ,'订单2' order_name
FROM dual
) ,
order_product AS(
SELECT
'1'product_id ,'产品1' product_name,'1'order_id FROM dual
UNION ALL
SELECT '2' ,'产品2','2' FROM dual
UNION ALL
SELECT '2' ,'产品2','1' FROM dual
UNION ALL
SELECT '1' ,'产品1','2' FROM dual
)
SELECT order_id,product_name
FROM(
SELECT orders.order_id, order_product.product_name, rank() over(PARTITION BY orders.order_id ORDER BY orders.order_id,order_product.product_id ) rn_
FROM order_product, orders
WHERE orders.order_id = order_product.order_id) a
WHERE a.rn_ = 1昨天没仔细看,还以为增加的那个表是新表,同#2 #3一样迷糊中!