2010-12-06 2 views
3

MySQLは私にとって最も難しい言語だと思います.1年前にMySQLを学び始めましたが、私は何ができるのか、どのように私のクエリを構築できるのかまだ分かりませんここで尋ねることなくMySQL:@varsとサブクエリを使って作業する

私は私がこれをtryiedてきたどのように私ができる@varsので、見てみたいと思います単純なクエリがあります。

SELECT param_1, @param := param_2, @param 
FROM my_table 

結果は次のとおりです。それDosen't

param_1 @param := param_2  @param 
Dave  3      [BLOB - 1B] 
Mike  4      [BLOB - 2B] 
Luke  2      [BLOB - 2B] 
Bob  65      [BLOB - 2B] 
Dean  6      [BLOB - 2B] 

@paramをparam_2と等しくする予定ですか?

param_1 @param := param_2  @param 
Dave  3      3 
Mike  4      4 
Luke  2      2 
Bob  65      65 
Dean  6      6 

[BLOB - 1B][BLOB - 2B]は何ですか?

時々私は複数の結果を持つことができ、特定のテーブルの結果ごとに1つだけの値を取得する必要があるとき、私はサブクエリを作るので、私はサブクエリを使用しますが、私はそれが正確にどのように動作するか分からない:

SELECT table_1.param_1, table_1.param_2, @param = table_1.param_3, new_table_2.param_1,  new_table_2.param_2 
FROM table_1 
LEFT JOIN (SELECT * 
      FROM table_2 
      WHERE new_table_2.param_1 = @param 
      LIMIT 1 
      ) new_table_2 
ON new_table_2.param_1 = @param 
WHERE table_1.param_2 = 33 

私の質問は次のとおりです:

最初のクエリで[BLOB - 1B][BLOB - 2B]が得られるのはなぜですか?

@varsをサブクエリに正しく渡す方法を教えてもらえますか?

サブクエリを使用する必要がある場合は、

基本的には、クエリのプロセスは何ですか、データが返される方法についての明確なガイドがありますか?

+0

のためのユーザ定義の変数を必要と思わないのですか? –

+0

私はこれを書いてテストしようとしましたが、それはひどく構造化されている可能性があることを知っています。サブクエリの良い例を見て修正する方法を理解したいと思います。 – vitto

+0

http://dev.mysql.com/doc/refman/5.0/en/user-variables.html – ajreal

答えて

0

これは、このクエリあなたがそのような@の例を見てきました

SELECT 
    table_1.param_1, 
    table_1.param_2, 
    table_1.param_3, 
    new_table_2.param_1, 
    new_table_2.param_2 
FROM table_1 
LEFT JOIN 
(
    SELECT * FROM table_2 WHERE new_table_2.param_1 = table_1.param3 LIMIT 1 
) as new_table_2 
ON new_table_2.param_1 = table_1.param3 
WHERE table_1.param_2 = 33; 
関連する問題