我有两张桌子,我将描述如下:
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/