0

MySQL データベースからアクセス許可を取得する認証システムがあります。

CREATE TEMPORARY TABLE db.temp (authority VARCHAR(100));
INSERT INTO db.temp (authority) SELECT blog.authors.id FROM db.authors;
UPDATE db.temp SET authority=CONCAT("AUTH_",authority);

SELECT authority FROM db.temp
UNION
SELECT authority FROM db.authorities_real

このスクリプトは、コマンド ラインから実行すると正常に動作しますが、ビューでは一時テーブルの使用は許可されていません。それらなしで私がやりたいことをする方法はありますか?

4

2 に答える 2

2

テーブルUNIONを使用しない理由:authors

SELECT CONCAT('AUTH_',blog.authors.id)
FROM db.authors
UNION 
SELECT authority 
FROM db.authorities_real

一時テーブルを作成する代わりにdb.authorsUNION. このようにすると、一時テーブルを使用する必要がなくなります。

UNION、クエリから重複を削除します。重複を気にしない、または重複を期待しない場合は、UNION ALL

于 2013-01-10T14:51:26.210 に答える
0

これらのステートメントを 1 つのステートメントに組み合わせることができます。

SELECT concat('AUTH_', blog.authors.id) as authority FROM db.authors
UNION -- all ?
SELECT authority FROM db.authorities_real`
于 2013-01-10T14:51:20.433 に答える