SELECT 多个值到多个表中的同一个键

Mot*_*zly 3 mysql multiple-tables

我有以下结构的两个表

表格1

uid | name | age
1   | John | 24
2   | Adam | 35
3   | Sara | 26
Run Code Online (Sandbox Code Playgroud)

表_2

id | uid | meta_key | meta_value
1  | 2   | location | NY
2  | 2   | school   | NYU
3  | 3   | Location | NY
4  | 3   | school   | XYZ
6  | 1   | location | NY
6  | 1   | school   | NYU
Run Code Online (Sandbox Code Playgroud)

我想做的是从 table_1 中选择用户,其位置是 NY,学校是 NYU

这是我尝试使用的查询,但没有成功

SELECT
  tabl_1.uid
FROM `tabl_1`, `tabl_2`
WHERE
  tabl_1.uid = tabl_2.uid
  AND table_2.meta_key IN ('location', 'school')
  AND table_2.meta_value IN ('NY', 'NYU')
ORDER BY tabl_1.uid ASC
Run Code Online (Sandbox Code Playgroud)

我到处找过,但没有任何运气,如果您有一个有效的查询或一个解决方案的链接,我们将不胜感激,谢谢。

Mar*_*rco 5

你应该试试

SELECT t1.uid
FROM tabl_1 t1 INNER JOIN tabl_2 t2
ON t1.uid = t2.uid AND t2.meta_key = 'location' AND t2.meta_value = 'NY'
INNER JOIN tabl_2 t3
ON t1.uid = t3.uid AND t3.meta_key = 'school' AND t3.meta_value = 'NYU'
Run Code Online (Sandbox Code Playgroud)

检查http://sqlfiddle.com/#!2/f35ef/1/0上的结果