2016-05-18 17 views
1

私は2つのテーブルを持っています。私は2つの値を比較する必要がありますが、両方のテーブルで異なるデータ型にあります。 1つのテーブルではintで、別のテーブルではvarcharです。私はcast()でvarcharを使ってみましたが、cast()はvarcharでは動作しません。intをvarcharデータ型に変換する

select user.username, user_follow.object_id from user,user_follow 
left join user_follow 
ON cast(user_follow.object_id as varchar(25))= user.username 
WHERE user.username= cast(user_follow.object_id as varchar(25)); 

ヘルプしてください:

私のクエリは次のようなものです。ありがとう。

答えて

0

あなたcastCHARデータ型として、あなたは、これはあなたが、left joinjoinを使用したいのか
わからない:)してくださいしてみてくださいとにかく、にデータをキャストすることができます何varcharデータ型が存在しないはずです。

select u.username, uf.object_id from user u 
left join user_follow uf 
ON cast(uf.object_id as char(25))= cast(u.username as char(25)) 
-- WHERE cast(u.username as char(25)) = cast(uf.object_id as char(25)); 

それとも

select u.username, uf.object_id from user u, user_follow uf 
-- left join user_follow uf 
-- ON cast(uf.object_id as char(25))= cast(u.username as char(25)) 
WHERE cast(u.username as char(25)) = cast(uf.object_id as char(25)); 

そしてfunction_castのを見てみましょう。

+0

お返事ありがとうございます。 –

+0

私は上記のクエリを使用しようとしましたが、それは私にエラーを与えています。エラーコード:1066。一意ではない表/エイリアス: 'user_follow' –

+0

更新されました。再度確認してください。 – Blank

2

"::"は、観察された動作の不正確な記述です。

応じので

Error Code: 1064 
You have an error in your SQL syntax; check the manual that corresponds 
to your MySQL server version for the right syntax to use near VARCHAR 

など1064我々は、そのエラーメッセージを期待して、私たちは、MySQLに「仕事」仕様に従って期待、およびMySQLが特定のエラーメッセージを返すようにするために、我々が期待する動作ですVARCHARは、CASTの有効なタイプではありませんが、CHARです。

参考:

http://dev.mysql.com/doc/refman/5.7/en/cast-functions.html#function_convert


注:

クエリの唯一の問題ではありません。

user_followテーブルへの参照が2つあるようです。それらの参照の少なくとも1つにテーブルエイリアスが割り当てられている必要があります。

クエリでは、結合操作に古い学校のカンマ構文も使用されています。新しい結合操作では、新しいJOINキーワードが使用されています。

返される結果セットの指定がなければ、実際に実行するクエリは "推測"しているだけです。私は推測しています...

SELECT u.username 
     , f.object_id 
    FROM user u 
    LEFT 
    JOIN user_follow f 
     ON CONVERT(CHAR(25),f.object_id) = u.username 
関連する問題