sql >> データベース >  >> RDS >> Mysql

列名の前のアットマークSQLステートメント

    @ signはSQLの変数です。

    MySQLでは、クエリの連続実行間で値を格納したり、2つの異なるクエリ間でデータを転送したりするために使用されます。

    2つのクエリ間でデータを転送する

    SELECT @biggest:= MAX(field1) FROM atable;
    SELECT * FROM bigger_table WHERE field1 > @biggest;
    

    もう1つの使用法は、MySQLがネイティブでサポートしていないランキングです。

    クエリの連続実行の値を保存する

    INSERT INTO table2
      SELECT @rank := @rank + 1, table1.* FROM table1
      JOIN( SELECT @rank := 0 ) AS init
      ORDER BY number_of_users DESC
    

    これが機能するためには、クエリで行が処理される順序を修正する必要があることに注意してください。これは簡単に間違えられます。

    参照:
    http://dev.mysql .com / doc / refman / 5.0 / en / user-variables.html
    mysqlの並べ替えとランキングのステートメント
    http:// www.xaprb.com/blog/2006/12/15/advanced-mysql-user-variable-techniques/

    更新
    このコードは機能しません。
    以前に接続を開いたばかりで、@fieldsが設定されていません。
    現在、nullを保持しています。 値。
    その上、@varsを使用してフィールド名を示すことはできませんのみ 値には@varsを使用します。

    $sql1 = "
    LOAD DATA LOCAL INFILE 'import.csv'
    REPLACE INTO TABLE tablename
    FIELDS TERMINATED BY ';' OPTIONALLY ENCLOSED BY '\"'
    IGNORE 1 LINES
    (`normalField`, @field1, @field2, `normalField2`, @field3, @field4)";
    



    1. MySQLのTimeStampのようなpeeweeのDateTimeFieldの自動更新オプションはありますか?

    2. TIME_TO_SEC()の例– MySQL

    3. OpenCartでカスタム配送方法を作成する:パート2

    4. SpringブートDockerとMysqlの構成