MySQL从第一个表中选择all并将第二个表中的匹配数据与第二个表过滤器的特定where子句连接起来

时间:2014-09-09 09:53:16

标签: mysql sql select join where

我在尝试从数据库中提取数据时遇到问题。

这是我的桌面设计

我在尝试从数据库中提取数据时遇到问题。

这是我的桌面设计

表1:

user_id    username
1          test
2          test2
3          test3

表2:

id         table2_userid   key        value
1          2               position   admin
2          2               name       myname

我想输出的是:

user_id     username       key        value
1           test           NULL       NULL
2           test2          position   admin
3           test3          NULL       NULL

这是我目前的sql代码:

 SELECT table1.user_id, table1.username, table2.key, table2.value 
 FROM table1 
 LEFT JOIN table2 ON table1.user_id = table2.table2_userid WHERE table2.key="position"

然而,这没有回报。请帮助我。

感谢。

3 个答案:

答案 0 :(得分:1)

尝试以下查询,它将适用于您的问题:

SELECT table1.user_id, table1.username, table2.key, table2.value FROM 
table1 LEFT JOIN table2 ON table1.user_id = table2.table2_userid and 
table2.key="position" group by table1.user_id

答案 1 :(得分:0)

尝试使用单引号:

SELECT table1.user_id, table1.username, table2.key, table2.value 
FROM table1 
LEFT JOIN table2 ON table1.user_id = table2.table2_userid WHERE table2.key = 'position'

否则您的查询对我来说似乎没问题。

我在评论中读到了这个:[S]ingle for [S]trings; [D]ouble for [D]atabase

答案 2 :(得分:0)

将您的条件从where子句移动到on子句

SELECT 
t1.user_id, 
t1.username, 
t2.key, 
t2.value 
FROM table1 t1 
LEFT JOIN table2 t2
ON t1.user_id = t2.table2_userid 
AND t2.key="position"

Demo