MySQLデータベースの列を他の列の関数にするにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/1225197

  •  22-07-2019
  •  | 
  •  

質問

私は、読者が本のどこにいるかを追跡するデータベースを使用しています。これを行うには、ページカウント列と現在のページ列を使用します。

(currentpage / pagecount)に等しい 'progress'列を追加する方法はありますか?

役に立ちましたか?

解決

2つのオプションがあります。 SELECT でそのフィールドを作成できます:

SELECT book_id, user_id, (currentpage/pagecount) AS progress FROM user_books;

または VIEW を作成します。これにより、明示的に操作を指定せずにクエリを実行できます。

CREATE VIEW user_books_progress AS
  (SELECT book_id, user_id, (currentpage/pagecount) AS progress FROM user_books);

その後、通常のテーブルとしてビューをクエリすることができます:

SELECT book_id, user_id, progress FROM user_books_progress;

算術演算子と算術演算の詳細については、ドキュメントをご覧ください:

  

11.5.1:算術演算子 < br>    12.1.12。 CREATE VIEW構文

他のヒント

列を関数として定義することはできません。これには少なくとも2つの回避策があります。

  • BEFORE UPDATEトリガーを使用して進行状況の列を更新します。BEFOREINSERTのトリガーも必要になります。
  • 進行状況列を計算するビューを使用します。
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top