0

2 つの異なるテーブルに 2 つの列があります。
PCTNoにはこの値があります:US2002014866
pct_publishing_dataにはこの値があります:の最後の 5 つの値とJP1014866
最後の 5 つの値を取得したいのですが、の 5 桁が入っていて最初の 2 つの値が同じである場合、それが表示されます..この場合表示されませんPCTNopct_publishing_datapct_publishing_dataPCTNo

これは私が実装しているコードです。

import MySQLdb

db = MySQLdb.connect(host = "localhost", user = "root", passwd="", db="fak")
cursor = db.cursor()

#Execute SQL Statement:
cursor.execute("SELECT auip_wipo_sample.PCTNo FROM auip_wipo_sample INNER JOIN us_pat_2005_to_2012 ON RIGHT(auip_wipo_sample.PCTNo,5) = RIGHT(us_pat_2005_to_2012.pct_publishing_data,5) AND LEFT(auip_wipo_sample.PCTNo,2) = LEFT(us_pat_2005_to_2012.pct_publishing_data,2)")
#Get the result set as a tuple:
result = cursor.fetchall()

#Iterate through results and print:
for record in result:
    print record
print "Finish."

#Finish dealing with the database and close it
db.commit()
db.close()

しかし、それはうまくいきません、それは私にそれらすべてを与えます

ヘルプ。

4

1 に答える 1

1

AND 右端と左端が一致した場合にのみ表示したいので、問題なく動作するはずです。しかし、一致する必要があるため、もちろん一致しませUS2002014866ん。JP1014866US1014866

これがそれを行うSQL Fiddleです(テーブルと列の名前を簡略化しました)

create table table1 (x1 varchar(20), y1 varchar(20)); 
create table table2 (x2 varchar(20), y2 varchar(20)); 
insert into table1 values ('US2002014866','foo1');
insert into table2 values ('US1014866','foo2');
insert into table2 values ('JP1014866','bar');

select *
from   table1
join   table2 on ( left(x1,2)= left(x2,2) and 
                  right(x1,5)=right(x2,5) )

結果は 1 行のみです。

X1           Y1   X2        Y2
US2002014866 foo1 US1014866 foo2
于 2013-05-22T18:29:35.133 に答える