0

JOIN私はSQLの専門家ではなく、 MySQLが提供するすべての機能を試しました。

  1. 私は主に、オフセット付きの、WHEREを使用したview1からのデータが必要です(これらの条件がないとデータは正しくありません)。ORDER BYLIMIT
  2. view1はview2によって制限されません
  3. データもview2からプルする必要がありますが、view2には独自のWHERE(または最良の)条件があります
  4. view2には対応するデータがない可能性がありますが、view1にリンクせずに取得しないでください(NULLsは問題ありません!)

SELECT私が思いついたハッシュではなく、私のために機能する2つを紹介します。

view1の場合:

SELECT * FROM view1 
WHERE column1 IS NULL OR column1 = 1 
ORDER BY dateColumn DESC LIMIT index1, count1;

(index1とcount1はストアドプロシージャにIN使用されます)

view2の場合:

SELECT * FROM table2 
WHERE column1 = ? AND table1_id IN (
  SELECT id FROM view1 
  WHERE column1 IS NULL OR column1 = 1 
  ORDER BY dateColumn DESC LIMIT index1, count1
) 
GROUP BY table1_id 

(?は私が入れた任意の値です)

私は機知に富んでいます。この2つを融合する方法がわかりません。

詳細

INforはクエリview2とほとんど同じであることに注意してください。view1ありがとう!

4

3 に答える 3

1

サブクエリを記述してtable2そこに WHERE 句を追加することも、クエリの ent に WHERE 句を追加することもできます -

SELECT * FROM table2 t2
  JOIN (
       SELECT id FROM table1
       WHERE column1 IS NULL OR column1 = 1
       ORDER BY dateColumn DESC
       LIMIT index1, count1
       ) t1
    ON t1.id = t2.table1_id
WHERE
  t2.column1 = ?
GROUP BY
  t2.table1_id

この例では、WHERE IN条件の代わりに JOIN を使用しました。

于 2012-12-29T08:43:12.200 に答える
0

このクエリはどうですか:

Select t1.id 
FROM table1 t1
JOIN table2 t2 ON t1.id = t2.table1_id
WHERE t1.column1 IS NULL OR t1.column1 = 1 
于 2012-12-29T08:46:39.523 に答える
0

私はそれがあなたを助けるべきだと思う

Select TableName1.id 
FROM TableName1 
JOIN TableName2 ON TableName1.id = TableName2.id
WHERE TableName1.column1 IS NULL OR TableName1.column1 = 1 
于 2012-12-29T09:00:32.480 に答える