- ベストアンサー
MySQLのサブクエリーでエラーがでます
現在MySQLを使って開発をしています。 SQLもMySQLもまだあまり使ったことがないのでなにか大きな勘違いをしている かもしれませんが、自分で作ったデータベースにMysqlコマンドでアクセスし、 以下のようにselectを行うとsyntaxエラーが発生します。 mysql> select CREATE_DATE from user where cust_id = (select cust_id from customer where memo = 'memo'); ERROR 1064: You have an error in your SQL syntax near 'select cust_id from customer where memo = 'memo')' at line 1 しかしサブクエリーの内容も、その前のselectもそれぞれ下記のように単体で実行すると正常に動作するので、文法的には間違っていないと思います。 ERROR 1064のsyntaxエラーは何を指しているのでしょうか? ぜひご教示ください。 mysql> select cust_id from customer where memo = 'memo'; +---------+ | cust_id | +---------+ | 1 | +---------+ 1 row in set (0.00 sec) mysql> select CREATE_DATE from user where cust_id = '1'; +-------------+ | CREATE_DATE | +-------------+ | 2001-07-23 | +-------------+ 1 row in set (0.00 sec)
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
MySQLってサブクエリつかえましたっけ? Todoリストにはいっているのですが。
その他の回答 (2)
- yanmaa
- ベストアンサー率45% (207/457)
JOINは駄目? select user.CREATE_DATE from user , customer where user.cust_id = customer.cust_id and customer.memo = 'memo'; というは駄目ですか?
お礼
たしかに上記の通りでできました。ありがとうございます。 たしかに知人からもjoinを使えばできるはず、と指摘を受けていたところ なのでjoinについても勉強してみます。 現在はとりあえず最初に書いたサブクエリーを先に実行し、その結果を 再びselectするという2段階でやっていました。
- yanmaa
- ベストアンサー率45% (207/457)
select CREATE_DATE from user where cust_id = (select cust_id from customer where memo = 'memo'); ではなく select CREATE_DATE from user where cust_id in (select cust_id from customer where memo = 'memo'); ではないですか? それか EXISTS ではないですか? JOINでもいいと思いますが... なおMySQLは使っておりませんので出来なかったらあしからず。
お礼
お返事ありがとうございます。 残念ながら、inとexistを試してみましたが、どちらもダメでした・・
お礼
サブクエリーが使えないDBってあったんですね・・!! ありがとうございました。m(__)m