0

テーブルからデータを取得する選択クエリを使用したいと考えています。

このように見えます

SELECT table1.value1, table1.value2, table1.id, table2.id, table2.value2
FROM table1
INNER JOIN table2
ON table2.id = table1.value4
ORDER BY table1.id DESC
LIMIT 10

table1.value40になることもありますが、値が0の場合はありません。これtable2.idは自動インクリメント値であるため、1から始まります。そして、1から始めたいです。

0 に等しい場合、その特定の行は使用できず、他の行だけが使用できるためです。

しかし、0 に等しくないtable2場合にのみ値を取得するように where 句を設定する方法を教えてください。table1.value4

4

2 に答える 2

3

あなたが実際に望んでいるのは、それからのようですLEFT JOIN。( のように)table1に一致がない場合でも、 のすべての行が返されます。table2table1.value4 = 0

SELECT table1.value1, table1.value2, table1.id, table2.id, table2.value2
FROM
  table1
  LEFT JOIN table2
    ON table2.id = table1.value4
ORDER BY table1.id DESC
LIMIT 10
于 2012-07-15T14:08:29.120 に答える
0

これを試して::

table2 id に 0 がない場合、以下のクエリは正常に機能します::

SELECT table1.value1, table1.value2, table1.id, table2.id, table2.value2
FROM table1
INNER JOIN table2
ON table2.id = table1.value4
ORDER BY table1.id DESC
LIMIT 10

しかし、table2 には id 0 の値がいくつかあり、それを無視したい場合

SELECT table1.value1, table1.value2, table1.id, table2.id, table2.value2
FROM table1
INNER JOIN table2
ON (table2.id = table1.value4 and table1.id!=0)
ORDER BY table1.id DESC
LIMIT 10
于 2012-07-15T14:11:42.970 に答える