« Prev || 1 | 2 | 3 | 4 |...| 22 | 23 | 24 || Next »

【MySQL】Error 1093 You can't specify target table 'xxx'

カテゴリー
MySQL
投稿者
nonukes
コメント
1件

You can't specify target table 'xxx' for update in FROM clause

のっけから、MySQLのエラー文である。

初めて目にしたエラー。

なんのことやら、さっぱり。

ググってみたら、出てくる出てくる。

MySQL 4.1 リファレンスマニュアル
http://dev.mysql.com/doc/refman/4.1/ja/subquery-errors.html

サブクエリは SELECT ステートメントと同じく、UPDATE ステートメントや DELETE ステートメントでも正式に使用できるので、UPDATE ステートメント内の割り当てにサブクエリを使用しても問題ありません。 しかし、サブクエリの FROM 節と更新対象の両方に同じテーブルを使用することはできません。

今回、僕がエラーに遭遇したクエリ文が、コレ↓

$sql = <<<SQL
UPDATE `{$tblname}`
SET `token` = 'logout_{$nowTime}'
WHERE `login_time` = (
  SELECT MAX(`login_time`)
  FROM `{$tblname}`
  WHERE `user_id` = '{$user_id}'
)
SQL;

そう、まさしく前回の記事“今日もMySQL。サブクエリ文について。”で書いた、サブクエリ文を用いたクエリ文である。

»Read More

今日もMySQL。サブクエリ文について。

カテゴリー
MySQL
投稿者
nonukes
コメント
書く

復職して、約2ヵ月。

なんとか、踏ん張っています。

最近ずっと、会員制サイトの構築に携わっていて、おかげでMySQLの知識が日に日に増えていっています。

今日は、サブクエリ文について。

以下のサイトは、サブクエリの“超簡単な”説明です。

サブクエリを使った検索条件の設定
http://www.dbonline.jp/mysql/select/index20.html

サブクエリとはSELECT文で取得した結果を他のSELECT文やUPDATE文の中で利用する使い方です。主にはWERE句の中で使用されることが多いのですがそれには限定されません。またサブクエリを利用できる文はSELECT文、INSERT文、UPDATE文、DELETE文、SET文、DO文のいずれかだけです。

まあ、WHERE句でちょっと複雑な検索条件を設定するときに便利かな?

僕の場合は、ログイン情報を取得する際に、次のようなクエリ文を発行した。

$sql = <<< SQL
SELECT `login_time`
FROM `{$tblname}`
WHERE `login_time` = (
  SELECT MAX(`login_time`)
  FROM `{$tblname}`
  WHERE `user_id` = '{$user_id}'
)
SQL;

ログイン/アウトの情報を格納しているテーブルにアクセスして、特定の`user_id`を持つ`login_time`の中から、最も値の大きいモノ、つまり最近のログイン時間を取得するときにこりゃ便利。

“忙しい”ってのはしんどいけど、精神が健全だとこうも充足感が得られるものなのかと、実感。

このまま、健全でいられますように。

しんどいから、寝る。

MySQLで“特殊文字”にハマった。。。

カテゴリー
MySQL
投稿者
nonukes
コメント
書く

最近ずっと、MySQL。

今日、ハマりました。

何気なく新規テーブルを作成してローカルサーバー(XAMPP)上で動作確認をしてみたところ、エラーが出た。

mysql_error()関数を使うと、エラーが出たSQL文の一部がそのまま表示されてしまいセキュリティー的に超NGなので、普段は使っていない。

しかしソースを見てもエラーの原因が皆目見当つかなかったので、ローカル環境においてmysql_error()関数を使ってエラーの内容を見てみた。

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 '~' at line 1

なんじゃ、コリャ。

調べてみた。

»Read More

またMySQL。今日はキャスト関数“CAST( )”について。

カテゴリー
MySQL
投稿者
nonukes
コメント
書く

奥が深いデータベース。

知らないことばっか。

今日は簡単に、キャスト関数“CAST( )”について。

MySQL 4.1 リファレンス
http://dev.mysql.com/doc/refman/4.1/ja/cast-functions.html

CAST( ) 関数は、あるデータ型の値から別のデータ型の値を生成する目的で使用することができます。

構文は以下のとおりです。

CAST(expression AS type)

type には、次のいずれかのデータ型を指定できます。

・BINARY

・CHAR

・DATE

・DATETIME

・SIGNED {INTEGER}

・TIME

・UNSIGNED {INTEGER}

»Read More

最近、MySQLばっか。今日は“DISTINCT”について。

カテゴリー
MySQL
投稿者
nonukes
コメント
2件

ここ数日、実に調子がよろしくない。

誰が悪いって、自分しかいないのだが。

色々考えていると、どんどん負のスパイラルに陥っていく。

アニマル浜口よろしく“気合いだ~!!”で乗り切れたら、どれだけラクか。

とりあえず今日は、明日の自分に淡い期待を抱いておこう。

さて、最近ずっとMySQLばかりだが、今日も(php+)MySQLである。

phpのコードなど、プログラミングに縁のない人(数年前まで自分もそうだったが)からしたら、まるで竜でも呼び出せそうな呪文に見えるかもしれないが、残念ながらボクはまだその領域に達していない。

せいぜい、MySQLからデータを呼び出せる程度である。

早く幻獣を召喚できるようになりたいと願う。

»Read More

« Prev || 1 | 2 | 3 | 4 |...| 22 | 23 | 24 || Next »
track feed