0

AとBの2つのテーブルがあります。

A のフィールド: id、name

-----------------
 ID |   NAME    |
-----------------
 1  |   name1   |
-----------------
 2  |   name2   |
-----------------
 3  |   name3   |
-----------------
 4  |   name4   |
-----------------
 5  |   name5   |
-----------------

B のフィールド: 入札、id

-----------------
 BID    |   ID  |
-----------------
 11     |   1   |
-----------------
 11     |   2   |
-----------------
 12     |   1   |
-----------------
 12     |   2   |
-----------------
 12     |   3   |
-----------------

左側に列 A.id、A.name を持つ A からのすべてのレコードを表示するクエリを実行したいと考えています。そして、B ON id WHEREbid = '11'から 3 番目の列を結合します。

したがって、次のようなものがあります。

--------------------------------
 A.ID   |   A.NAME  |   B.BID
--------------------------------
 1      |   name1   |   11
--------------------------------
 2      |   name2   |   11
--------------------------------
 3      |   name3   |
--------------------------------
 4      |   name4   |
--------------------------------
 5      |   name5   |
--------------------------------

助言がありますか?

4

3 に答える 3

3

あなたは使用したいと思うでしょうLEFT JOIN

SELECT A.ID, A.NAME, B.BID
FROM A
LEFT JOIN B
   ON A.id = B.id
WHERE B.BID = yourValue -- use the WHERE clause for additional filtering

デモで SQL Fiddleを参照してください

更新に基づいて、フィルターをWHERE句から次のように移動する必要がありますJOIN

SELECT A.ID, A.NAME, IFNULL(B.BID, '') BID
FROM A
LEFT JOIN B
   ON A.id = B.id
  and b.bid = 11

デモで SQL Fiddle を参照してください

于 2012-10-05T15:02:06.293 に答える
2

bid次の値を持つ値に関係なく、すべての値を一覧表示しますleft join

select a.id, a.name, b.bid
from a
left join b on b.id = a.id
where b.bid = 11

特定の値があるinner join場合に使用します。bid

select a.id, a.name, b.bid
from a
inner join b on b.id = a.id
where b.bid = 11

結合の適切な説明

SQLFiddle の例

于 2012-10-05T15:02:28.737 に答える
1

table_A の a.id と同じ値を含む table_B の列がありますか? そうしないと、table_b を table_a に結合できません。ここで必要なのは

WHERE bid = ? 

次のようなものでなければなりません

WHERE bid = a.bid

また

WHERE a.ID = b.AID
于 2012-10-05T15:06:46.143 に答える