0

これが状況です。2セットのデータがあります。1つは、システムが使用するすべての「チケット」エントリのリストです。IDごとに少なくとも1つですが、それ以上になる可能性があります。また、ハードウェアの問題がわかっているIDだけの別のリストもあります。これは、IDの比較的小さい(ただし重要な)サブセットです。このリストを非常に単純なテーブルBに配置しました。これは、文字通り、これらのIDのみを含む単一の列です。

これら2つのテーブルを結合するMySQLクエリが必要なので、テーブルAからすべてのエントリを取得します。各エントリには、同じIDがテーブルBに存在するかどうかという単純なブール値である別のフィールドが追加されています。

だからこのようなもの:

SELECT * FROM `table_A` A
LEFT JOIN `table_B` B ON A.id=B.id

Bが2列のテーブルで、2番目の列(これを呼び出すdown)がtrueすべての行にある場合、またはであるかどうかを確認できdownます。truenull

ただし、Bには列が1つしかないため、実際にはデータが結果に追加されません。

この「結合」操作を実行する簡単な方法はありますか(データベースにこの列がまったく不要です)、Aの特定のエントリのIDがBにも存在するかどうかを確認するだけです。

(上または下にある別のフィールドをAに追加することも、かなり非効率的です。これは、単一のIDに対して多くの行があり、ほとんどのIDがとにかく下がらないためです)

4

2 に答える 2

3
select 
    A.*, 
    case when B.ID is null then 0 else 1 end as myBoolean
from `table_A` A
    left join `table_B` B on A.ID = B.ID
于 2012-09-21T16:28:32.570 に答える
2

以下の例では、IDがtable_Bに存在する場合、「down」はnullになりません。

SELECT * , B.id as `down` FROM `table_A` A
LEFT JOIN `table_B` B ON A.id=B.id
于 2012-09-21T16:24:30.550 に答える