我正在尝试通过外键连接的两个表中进行搜索。
问题是,我需要以某种方式“合并”每个表中名为“ 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();