我有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)";
感谢您与我一起调查。
答案 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()语句