我正在使用PHP与Mysql。 我想知道在查询中查询真正的问题,如果我对使用INNER JOIN不太满意,而更喜欢编写多个查询。 我做了一件非常糟糕的事情,还是只是让它在视觉上听起来不错?
我的意思是......
$query="SELECT * FROM TABLE WHERE USER_ID=1";
$data=mysqli_query($dbc,$query);
$row=mysqli_fetch_array($data);
$query2="select * from TAble2 where some_id='{$row['user_id']}'";
$data1=mysqli_query($dbc,$query);
$row1=mysqli_fetch_array($data1);
// and then use $row1['column_name']
答案 0 :(得分:4)
在我们帮助解决您的具体问题之前,您应该发布一些代码。
然而,我会说,做某事不舒服通常不是不这样做的借口。相反,您应该尽可能阅读有关JOIN
的所有内容,以便 舒适,然后就不会出现问题。
JOIN
非常强大,如果没有它们,你可以在MySQL中做很多事情。当你在查询中说查询时,我认为你的意思是做像
SELECT
postid
FROM
Post
WHERE
userid IN (
SELECT
userid
FROM
User
WHERE
username = ?
)
这不比
复杂得多SELECT
postid
FROM
Post
NATURAL JOIN User
WHERE
username = ?
答案 1 :(得分:0)
将尽可能多地组合到单个查询中而不是迭代嵌套游标的主要好处是,到DB的往返是相对昂贵的。
在问题中使用嵌套游标方法,您正在准备并执行 n + 1 SQL语句,其中 n 是初始结果集中的记录数。
如果要将这些查询与连接组合在一起,那么无论结果集有多大,您都只能准备并执行一个语句。
SELECT T1.foo, T1.bar, T2.baz
FROM `TABLE` T1
INNER JOIN `Table2` T2 ON T1.user_id = T2.some_id
WHERE T1.user_id = 1
您也减少了对数据库本身的负担,特别是在启用了语句缓存的情况下。