MYSQL Seleccione en dos valores una columna

Necesito seleccionar una fila de mi tabla mysql.

En la tabla hay dos filas con un valor igual.

TABLE ----- articleId keywordId 

Ahora necesito seleccionar un artículo, que tenga la ID de palabra key = 1, así como la ID de palabra key = 12.

Cada enlace a una palabra key tiene su propio logging.

¿Cómo puedo hacer una consulta de selección para saber, si hay un artículo, que coincida con las dos palabras key?

Prueba esto:

 SELECT * FROM tablename WHERE keywordId IN (1, 12) GROUP BY articleId HAVING COUNT(*) = 2; 

Compruebe la DEMO FIDDLE de SQL

Esto se llama División de Relaciones . Aquí hay una manera de hacerlo:

 SELECT * FROM tablename WHERE articleId IN ( SELECT articleId FROM tablename WHERE KeywordId IN (1, 2) GROUP BY articleId HAVING COUNT(KeywordId ) = 2 );; 

También puede usar subconsultas para cada palabra key y unirlas

 select k1.articleId from ( select articleId from TABLE where keywordId = 1 ) k1 inner join ( select articleId from TABLE where keywordId = 12 ) k2 on k1.articleId = k2.articleId 

Según los índices y el tamaño de la tabla, esto puede ser más eficiente que Group By

 SELECT * FROM `table_name` WHERE `keywordId` = '1' AND `keywordId` = '12' 
 select ArticleId from Table where keywordId = 1 Intersect select ArticleId from Table where KeywordId = 12 
 SELECT * FROM table WHERE keywordId IN (1, 12);