我有两张桌子,我将描述如下:
1)主表具有自动递增的U_ID,并且有一个名为RU_ID的列,该列表示查找表的ID。
2)查找表按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)";

谢谢你和我一起调查这件事。

最佳答案

你试过加入吗?

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之前的连接表的方式,而是实际使用连接语法,因为它更易于在复杂的查询中读取,或者您可以使用连接语法拥有更多的功能。。这样就不需要IN()语句

关于php - MYSQL-在同一查询中从查找表和主表中的字段获取值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26224025/

10-11 10:48