レコードの値を「変更」ではなく「入れ替える」ことはできますか?
AレコードとBレコードの unique を定義しているフィールドで入れ替えを行いたいのですが、
まずAの値を取り出し変数に保存($A)
次にAに使用されていない値を UPDATE 〜 SET して
次にBの値を保存($B)
Bに$Aを UPDATE 〜 SET
最後にAに$B を UPDATE 〜 SET
かなり面倒(アホ)な処理をしていると思うのですが方法はありますでしょうか
530 :
529:2006/04/16(日) 13:14:06 ID:8RWPZyZy
↑もし一度のクエリで不可能ならば、もっとスマートな処理法などを御教示お願いします。
>>518 「サーバにロードする」の意味が分からないけど、
INSERT を速くしたいならauto_commitをoffにするとか
一時的にINDEXを無効にしてINSERTが終わった後にINDEXを付けるとか
すればいいんじゃね?
532 :
518:2006/04/16(日) 19:38:42 ID:???
>>皆様
Windowsを消去して、Linuxで再構築中です。
なんか、よそさうです。お騒がせしました。
_,.r::'::::::::::::::-.、
r::::_;:---、、;;::-'ー、ヽ
/':::i' ヾi
,,.r、:::::::i .: ll
rr;i:::,r:::::! _,,,__, _,,,..._ .l:i
ヾ:r::;:-、:r i'tテ;:. i:'tテ:r i::ヽ
`ヾ::rt' ´ ' l::. ´ !r'
ヾ.ィ -、ノ:. l
./!、 ー-‐;':. /
/ ヾ ヽ、 ' /
∧ ヽ ` 7‐r_'/ヽ
,r ヽ、 ` <ニrヽ 〉
,r' -、 ヾ il l、
r  ̄ t- ヾi: lヽ
ホーソレデ[Edward Horsorde]
(1765〜1822 ノルウェー)
みなさんに質問ですが、MySQLのインストールで
linux:/usr/local/mysql # ./bin/safe_mysqld --with-mysql=usr/local/mysql
と入力しMySQLサーバーを起動させたいのですが、
Starting mysqld daemon with databases from /usr/local/mysql/data
STOPPING server from pid file /usr/local/mysql/data/linux.pid
060416 20:56:36 mysqld ended
となってしまいます。どうすればサーバーに接続できるでしょうか? バージョンは
PHP php-5.1.2
Apache 忘れてしまいました・・・
Mysql mysql-5.0.19 です。
, イ)ィ -─ ──- 、ミヽ
ノ /,.-‐'"´ `ヾj ii / Λ
,イ// ^ヽj(二フ'"´ ̄`ヾ、ノイ{
ノ/,/ミ三ニヲ´ ゙、ノi!
{V /ミ三二,イ , /, ,\ Yソ
レ'/三二彡イ .:ィこラ ;:こラ j{
V;;;::. ;ヲヾ!V ー '′ i ー ' ソ
Vニミ( 入 、 r j ,′
ヾミ、`ゝ ` ー--‐'ゞニ<‐-イ
ヽ ヽ -''ニニ‐ /
| `、 ⌒ ,/
| >┻━┻'r‐'´
ヽ_ |
ヽ _ _ 」
ググレカス [ Gugurecus ]
( 2006 〜 没年不明 )
536 :
534:2006/04/16(日) 21:50:00 ID:???
>>535 ググってみて一通り試してみたのですが駄目でした・・・。
540 :
NAME IS NULL:2006/04/17(月) 03:28:42 ID:tXWVnh6W
542 :
529:2006/04/17(月) 11:59:27 ID:???
>>529 の解決方法ありましたら宜しくお願いします。
>>529 そのアホなやりかたしかねーんじゃねーの。
普通DBは並びなんてかんけーねーし。
並びは order by で作る物だから、並びの重みを定義する
フィールドでも作って、その値を変えたりするべき。
544 :
NAME IS NULL:2006/04/17(月) 15:11:13 ID:bdLyXr1W
>>543 並び(ORDER)ではなく、AとBとで値を入れ替える方法です。
そのフィールドはユニークになっているので、今は下のような流れで変更しています(PHP)
SELECT test FROM table1 WHERE id = $a;
UPDATE table1 SET test='0' WHRER id = $a;
SELECT test FROM table1 WHERE id = $b;
UPDATE table1 SET test=$a_tmp WHRER id = $b;
UPDATE table1 SET test=$b_tmp WHRER id = $a;
>>541 ホストAでMySQLが動いてて、ホストBでもMySQLが動いてて
両者はNFSで同じデータベースファイルを共有してるって?
そんな動作はMySQLは保証してないんと違う?
クエリキャッシュでテーブルが更新云々言ってるのは、
一つのMySQLサーバプログラムの中の話だと思うが。
>>544 AとBってなんだよw 定義が絞れてないぞ。
レコード同士の特定フィールドの値を入れ替えるんっしょ?
2,3行目を一体化できる、とか細かいのは置いといて、
結局SQLではそういう処理手順でしょ。