11

私が持っているもの:次の構造:

table_zero
-> id (自動インクリメント付き PRIMARY)
-> その他

table_1
-> id (テーブル ゼロ ID への外部キー)
-> varchar(80) 値の例: (aahellobbb)
-> one_field

table_2
-> id (テーブル ゼロ ID への外部キー)
-> varchar(160) 値の例: (aaecehellobbb)
-> other_field

私が欲しいもの: varchar フィールドの LIKE '%str%' とのすべての一致を含む (id,varchar) 配列を検索して取得します。たとえば、「hello」文字列で検索すると、両方のサンプル値とそれぞれの ID が取得されます。これらの ID は PRIMARY KEY への参照であるため、常に異なります。

私が試したこと:UNION ALLで試しましたが、私の例ではLIMITSでは機能しません。

4

3 に答える 3

15

を使用UNIONすると、同じ ID を持つ行が複数回取得される場合があります。を使用するのはLEFT JOINどうですか?

あなたの質問を理解したら:

SELECT table_zero.id, table_1.varchar_field, table_2.varchar_field
FROM table_zero
  LEFT JOIN table_1 ON table_zero.id = table_1.id
  LEFT JOIN table_2 ON table_zero.id = table_2.id
WHERE table_1.varchar_field LIKE '%str%'
  OR table_2.varchar_field LIKE '%str%'
于 2013-02-27T13:43:30.673 に答える
2

これを試して

SELECT *
FROM 
(
SELECT table_zero.id AS ID, table_1.varchar_field AS field
FROM table_zero
  JOIN table_1 ON table_zero.id = table_1.id
WHERE table_1.varchar_field LIKE '%str%'
UNION
SELECT table_zero.id, table_2.varchar_field  AS field
FROM table_zero
  JOIN table_2 ON table_zero.id = table_2.id
) tbl
WHERE 
tbl.field LIKE '%str%'
于 2013-02-27T13:59:44.363 に答える
2
SELECT table_zero.id, table_1.varchar_field, table_2.varchar_field
FROM table_zero
  LEFT JOIN table_1 ON table_zero.id = table_1.id
  LEFT JOIN table_2 ON table_zero.id = table_2.id
WHERE table_1.varchar_field LIKE '%str%'
  OR table_2.varchar_field LIKE '%str%'
于 2014-03-18T11:18:08.317 に答える