2

データベースに 2 つのテーブルがあり、1 つはtableaで、もう 1 つは ですtableb

SELECT * 
FROM   TABLEA

結果:

╔═════════════════════════════════════════════════════╗
║           ip                          mac           ║
╠═════════════════════════════════════════════════════╣
║         1.10.0.0.97               00 14 2A 2F 72 FE ║
║        1.10.0.0.98                08 CC 68 71 A1 C0 ║
╚═════════════════════════════════════════════════════╝



SELECT * 
FROM   TABLEB 

結果:

╔═══════════════════════════════════════╗
║     mac                          port ║
╠═══════════════════════════════════════╣
║     0:14:2a:2f:72:fe               24 ║
║     8:cc:68:71:a1:c0                7 ║
╚═══════════════════════════════════════╝

tablea と table c を結合し、ip、ma​​c、port を表示する 3 つの列を持つ 3 番目の table を作成します。テーブルはすでに作成されており、これが私が考えていることです。

INSERT INTO TABLEC 
SELECT A.IP, 
       A.MAC, 
       B.PORT 
FROM   TABLEA A, 
       TABLEB B 
WHERE  A.MAC = REPLACE('REPLACE('B.MAC',':',' ')','0','00')

クエリでエラーが発生する

ERROR 1064(42000): 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 'b.mac',':',' ')','0','00')

マニュアルを確認しましたが、エラーの場所を特定できませんでした。また、私の置換関数は 0:14:2a:2f:72:fe を 00 14 2A 2F 72 FE に変換できますが、8:cc:68:71:a1:c0 に対して試行すると機能しません。この 3 番目のテーブルを作成する際に助けていただければ幸いです。

4

3 に答える 3

2

'の前後replace)前後の引用符を削除する必要がありますb.macまた、代わりにLPADを使用する必要000あるため、c0に置き換えることはできません。c00

INSERT INTO TABLEC 
SELECT A.IP, 
       A.MAC, 
       B.PORT 
FROM   TABLEA A, 
       TABLEB B 
WHERE  A.MAC = UPPER(LPAD(REPLACE(B.MAC, ':', ' '), 17, '0')) 

SQL フィドルのデモ

于 2013-09-11T07:21:58.677 に答える
2

置換を行う前に、tableb.mac を (0 で) lpad する必要があります。

于 2013-09-11T07:24:38.077 に答える