エラーコード:1093あなたはFROM句に更新のターゲット表「C」を指定することはできません

クリスティアンフラウィウス:

私は、機能のインタビューのために自分を準備しようとしていると私は私が最後の演習C)でいくつかの問題が発生したこの問題を解決しようとしたとき。

ここでは、画像の説明を入力します。

私は私のローカルデータベース「labsd」にこれらのテーブルを再作成しており、これは私のソリューションです。

A)

SELECT  labsd.interns.email,labsd.grades.grade
from labsd.grades
Inner join labsd.interns on labsd.interns.id=labsd.grades.id
Order by labsd.grades.grade desc
Limit 10;

B)

SELECT count(labsd.grades.id),labsd.grades.grade
from grades
group by labsd.grades.grade
order by count(labsd.grades.id) desc;

そして、ここで問題です

C)

Update labsd.interns as c
Set c.Accepted=1
where labsd.interns.id In (SELECT  labsd.interns.id
from labsd.grades
Inner join labsd.interns on labsd.interns.id=labsd.grades.id
Order by labsd.grades.grade desc);

最初の時点で、私は私がそのコードを再利用する必要があると思ったトップ10の学生のために頼まれたが、私はもう限界を使用することはできませんし、私は次のエラーを得たことを考えると:

Error Code: 1235. This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'

私はそれが最後のバージョンであると仮定して、私はちょうどそれをこの学期をインストールしているかのMySQLのバージョンを見つける方法がわかりません。

とにも制限を使用せずに、私はまだタイトルに言及したエラーを取得します。私は、テーブルの名前を変更しようとしたが、それは私の問題を解決していません。

GMB:

MySQLは使用しようとしているという構文を許可していません。代わりに、次のような構文に参加/更新を使用することができます。

update labsd.interns s
inner join (
    select i.id
    from labsd.grades g
    inner join labsd.interns i on i.id = g.id
    order by g.grade desc limit 10
) t on t.id = s.id
set s.accepted = 1

サブクエリが列挙id10件の最良の候補のSは、その後、外部クエリは、元のテーブルとサブクエリの結果を結合し、セットに一致する行のフラグ。

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=377421&siteId=1