在两个表中搜索MySQL

时间:2015-10-25 15:37:30

标签: mysql sql arrays

我试图在两个通过外键连接的表中搜索。

问题是,我需要以某种方式"合并"两列名为"属性" 来自每个表,并使用IN()使用数组在其中搜索,并使用HAVING()进行完全匹配计数。

表看起来像这样

First table
----------
id         INT primary key 
name       VARCHAR 
attribute  INT
etc..

Second table
----------
id               INT primary key 
attribute        INT 
fg_first_table   INT foreign key

例如,我有一个内爆阵列(1,2,4,5)。 数字1存储在第一个表中,其余的2,4,5存储在第二个表中。如何从第一个表中获取ID这两个表中的数字匹配属性col?

甚至可能吗?感谢。

更新:表格数据 从第一个表中选择一个ID,其中ARRAY(1,2,4,5)匹配两个表中的cols属性。

First table
----------
id        name                attribute      
-----------------------------------------------------
1         Something           1

Second table
----------
id        attribute           fg_first_table
-----------------------------------------------------
1         2                   1
2         4                   1
3         5                   1

1 个答案:

答案 0 :(得分:0)

所以我必须自己解决这个问题。在这里。

SELECT u.id, COUNT(DISTINCT(u.attribute)) AS attribute_count
FROM (
  SELECT id, attribute FROM first_table
  UNION
  SELECT fg_first_table AS id, attribute FROM second_table
) AS u
WHERE 
u.attribute IN (1, 2, 4, 5) 
GROUP BY u.id 
HAVING attribute_count = 4 
ORDER BY RAND();

谢谢大家,感谢您的帮助。