2016-06-28 11 views
0

私は、自身に関連するテーブルを持っています。カラムはvin、type、snです。私はタイプ1の行が1つしかないタイプ2のすべての行を探したい。私はこの試みた:MySQLのWHERE EXISTSクエリで選択されたカラムを使用する

select count(*) as aggregate 
from `data` as `t1` 
where `type` = 2 
    and `last_service` < DATE_SUB(now(), INTERVAL 12 MONTH) 
    and exists (
       select count(*) as data.count 
       from `data` 
       where count=1 
        and `type` = 1 
       ) 

を私は次のエラーを取得しておいてください。あなたがそのようなテーブルの列にデータを割り当てることはできません

Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ' .count from data where count=1 and type = ?)' at line 1 .

+1

コミュニティは最近、「[緊急」の質問を追加する](http://meta.stackoverflow.com/q/326569/472495)について議論しており、企業コンセンサスはそれが受け入れられないということです。これをあなたの投稿に追加しないでください。 – halfer

答えて

0

を試してみてください。代わりにas data_countを試してください。

+0

はこれを試しましたが、まだ未知の列data_countと表示されます – Shizle

+0

exists()副問合せとして試してみてください: = 1 with data_count = 1' –

+0

クエリの 'WHERE'句で選択したフィールドのエイリアスを使用することはできません。それは' HAVING'欄にある必要があります。 – Uueerdo

0

as data.count: あなたは、複雑な識別子としてエイリアスを使用しているため、構文エラーがあります

select count(*) as count from data where count=1 and type = 1 


select count(*) as count from data having count(*) = 1 and type = 1 
+0

それを試してみましたが、どちらもうまくいきませんでした – Shizle

+0

where句で動的に生成された –

関連する問題