基本的にJOIN条件を言い換えているだけなので、WHERE句は役に立ちません。これを試して:
SELECT *
FROM employees AS e
INNER JOIN dept_emp AS de ON e.emp_no = de.emp_no
WHERE de.dept_no = '?'
明らかに、実際にフィルタリングしようとしている値?
に置き換えられます。dept_no
クエリの制限/ページネーションの表示に関する質問ごとに、それはSQLLIMIT
句を介して行われます。この句は、いくつかの異なる方法で表現できます。
これは最初に最大行数を返すだけです:
LIMIT 100 <-- shows first 100 rows from the result set
結果のページ付けには、次の 2 つの形式の構文が使用されます。
LIMIT 0, 100 <-- show first 100 rows from the result set (start at 0 offset, and return a max of 100 rows
LIMIT 100, 100 <-- show rows 101-200 from the result set (start at 100 offset and return max of 100 rows)
または:
LIMIT 100 OFFSET 0 <-- first 100 rows
LIMIT 100 OFFSET 100 <-- rows 101-200
すべてをまとめると
SELECT *
FROM employees AS e
INNER JOIN dept_emp AS de ON e.emp_no = de.emp_no
WHERE de.dept_no = '?'
ORDER BY e.emp_no
LIMIT 0,100
ORDER BY
句も追加したことに注意してください。これは、通常の順序付けSELECT
されていないだけでは順序が保証されないという点で、ページネーションにとって重要です。なしでページ分割しようとするとORDER BY
、複数の「ページ」で同じ行が返される可能性があります。