我正在尝试通过外键连接的两个表中进行搜索。

问题是,我需要以某种方式“合并”每个表中名为“ attribute”的两列,并使用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

最佳答案

因此,我必须自己弄清楚,现在就可以了。

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();

10-04 14:58