值为null时查询的问题

时间:2014-04-18 02:55:51

标签: php mysql sql

我正在使用php从数据库查询当前10个独立表中的每一个的一条信息。使用多个查询的问题是,在访问使用所有这些信息的网页时,它非常慢。当由于WHERE ...语句而不存在其中一个值时,我似乎无法获得我想要的所有信息。

例如,我的单个查询都采用以下格式:

SELECT eval_id FROM eval WHERE user_id = $id;

我的多表查询如下所示:

SELECT eval_id,list_id,tab_id
FROM eval,list,tab
WHERE eval.user_id = $id
  AND list.user_id = $id
  AND tab.user_id = $id;

我尝试将这些查询合并到一个大型查询中,但是当表的user_id不存在时,WHERE ...语句中的比较会搞砸整个查询。有谁知道检索所有这些信息的最佳方法?

假设这些表是" eval,list和tab,"他们的身份分别是* _id。即使eval不包含user_id = $ id的结果,查询此内容的最佳方法是什么?

2 个答案:

答案 0 :(得分:0)

SELECT eval.eval_id, list.list_id
FROM user
JOIN eval ON eval.user_id = user.id
JOIN list ON list.user_id = user.id
WHERE user.id = $id

希望它可以帮到你。

更新:想想其他解决方案:

SELECT eval_id as id, "eval" as table
FROM eval WHERE eval.user_id = $id

UNION

SELECT list_id as id, "list" as table
FROM list WHERE list.user_id = $id

答案 1 :(得分:0)

您可以在WHERE声明中使用以下任一查询:

AND TABLE.TABLE_id <> null //null 

AND TABLE.TABLE_id <> 'null' //String null

AND TABLE.TABLE_id <> '' //empty String

检查您的数据库以查看您的id返回的空值类型,并选择与其匹配的添加项。

此外,虽然LEFT JOIN可能在查询中看起来更好,但它们并不总是更快,所以请确保在使用之前对其进行测试。