반응형
단어 목록이 있습니다. 'Apple', 'Orange', 'Pear'라고 가정 해 보겠습니다. 다음과 같은 데이터베이스에 행이 있습니다.
------------------------------------------------
|author_id | content |
------------------------------------------------
| 54 | I ate an apple for breakfast. |
| 63 | Going to the store. |
| 12 | Should I wear the orange shirt? |
------------------------------------------------
content
열에 내 목록에서 하나 이상의 단어가 포함되어 있기 때문에 첫 번째 및 세 번째 행을 반환 할 InnoDB 테이블에 대한 쿼리를 찾고 있습니다. 내 목록의 각 단어에 대해 한 번씩 테이블을 쿼리하고 LIKE 및 % 와일드 카드 문자를 사용할 수 있다는 것을 알고 있지만 그러한 일에 대한 단일 쿼리 메서드가 있는지 궁금합니다.
해결 방법
수정 :
이 같은:
SELECT * FROM yourtable WHERE content LIKE '%apple%' OR content LIKE '%orange%'
단어를 반복하여 WHERE 절 조건을 만들 수 있습니다.
예 :
$words = array( 'apple', 'orange' );
$whereClause = '';
foreach( $words as $word) {
$whereClause .= ' content LIKE "%' . $word . '%" OR';
}
// Remove last 'OR'
$whereClause = substr($whereClause, 0, -2);
$sql = 'SELECT * FROM yourtable WHERE' . $whereClause;
echo $sql;
SELECT * FROM yourtable WHERE content LIKE "%apple%" OR content LIKE "%orange%"
참조 페이지 https://stackoverflow.com/questions/4688643
반응형
'MySql' 카테고리의 다른 글
MySQL SQL로 성경을 저장하는 가장 좋은 방법은 무엇입니까? (0) | 2020.10.23 |
---|---|
MySQLi를 찾을 수 없음 Dockerized PHP (0) | 2020.10.23 |
MySQL 하나의 문 내에서 MySQL의 자동 증가 값에 액세스 할 수 있습니까? (0) | 2020.10.22 |
MySQL PHP의 하위 쿼리 (0) | 2020.10.22 |
MySQL이 비교를 위해 인덱스를 사용하지 않는 이유는 무엇입니까? (0) | 2020.10.22 |
댓글