MYSQL - 从同一查询中的查找表和主表中的字段获取值

时间:2014-10-06 20:06:43

标签: php mysql sql pdo lookup

我有2个表格,我将在下面描述:

1)主表,其自动增量为U_ID,并且有一个名为RU_ID的列,它引用查找表的ID。

2)Lookup表由RU_ID自动递增,并且有一个名为ROLE的列,其中有一个sting值。

现在我需要一个SELECT语句,它显示主表的所有值(SELECT * FROM ...)和查找表的ROLE值。

到目前为止我有这个: 请注意,对于此示例,= 2是静态的,这将是一个保存RU_ID编号的变量。此示例也将在PHP - PDO中使用,但SQL查询确实是通用的。

    SELECT * 
    FROM tbl_users as u 
    WHERE u.RU_ID = 2
    AND STATUS = 1 
    AND u.RU_ID IN 
    (SELECT ROLE 
     FROM tbl_role_users, tbl_users
     WHERE RU_ID = 2)";

感谢您与我一起调查。

1 个答案:

答案 0 :(得分:1)

你试过JOIN吗?

SELECT t.*, t1.role
FROM tbl_users t
JOIN tbl_role_users t1 ON t.RU_ID = t1.RU_ID -- # --or t1.ID whichever is referenced
WHERE t1.RU_ID = 2
  AND t.status = 1;

如果您想加入表而不过滤多余的行,那么只需在LEFT

之前添加JOIN

注意:

我建议你避免使用前ANSI连接表的方法,并实际使用JOIN语法,因为它更容易阅读复杂的查询,或者你可以使用JOIN语法获得更多功能..这样你就不需要了IN()语句