我需要一个根据以下要求的选择查询。
Table 1:
DEVICEID MobileNo DealerCode FNAME LNMAE
1 1234 11 test test
2 1234 11 TEST tESt
Table 2:
DealerCode DEALERNAME
11 JON
12 DOE
Output:
MobileNo DealerCode NAME DEALERNAME
1234 11 test test JON
请提供相同的查询。
“没有重复的条目”
您的数据不包含重复条目。有一个UID(deviceid
),每行包含fname
和lname
的不同值。好的,它们仅在案例方面有所不同,但Oracle RDBMS区分大小写(默认情况下)。所以这些行是不同的。
也许您的应用程序需要mobileno
上的唯一键?如果是这样,您需要指定一个规则来选择要键入哪一行以及丢弃哪一行。所以,像这样:
select p.mobileno
, p.dealercode
, p.fname || ' ' || p.lname as name
, d.dname as dealername
from phone p
join dealer d
on d.dealercode = p.dealercode
where p.deviceid = (select min(x.deviceid)
from phone x
where x.mobileno = p.mobileno)
/
在您的选择查询中使用distinct关键字。那应该做。
select distinct t1.mobile_no, t1.dealer_code, t1.fname, t1.lname, t2.delear_name
from table1 t1
join table2 t2 on t1.dealer_code = t2.dealer_code;
这样的事情对你有用。
SELECT MIN (MobileNo) MobileNo,
MIN (a.DealerCode) DealerCode,
MIN (FNAME || ' ' || LNMAE) NAME,
MIN (b.DEALERNAME) DEALERNAME
FROM Table1 a JOIN Table2 b ON a.DealerCode = b.DealerCode;
似乎table2
是table1
的DealerCode
的查找表(并且我认为它是table2
的主键列,并且在table1
指出table2
的DealerCode
列的外键)。然后,您可以在没有too_many_rows
异常的情况下尝试此操作:
SELECT t1.mobileno, t1.dealercode, lower(t1.fname||' '||t1.lnmae) name,
( select t2.dealername from table2 t2 where dealercode = t1.dealercode ) dealername
FROM Table1 t1
GROUP BY t1.mobileno, t1.dealercode, lower(t1.fname||' '||t1.lnmae);