0

我想从 2 个不同的表中进行选择。

在第一个表中,我想全选,但我只会显示我想要的。

在第二个表中,我只想选择个人资料图片,但即使用户没有个人资料图片,也应该选择用户表中的数据。

我正在使用内部连接。下面是我的代码:

SELECT * FROM
 tish_user INNER JOIN tish_images
 ON tish_user.user_id = tish_images.user_id
 WHERE tish_images.prof_image = 1
4

5 回答 5

2

要从两个不同的表中进行选择,您应该从每个表中指定所需的值,而不是使用 catch-all *。使用 LEFT JOIN 而不是 INNER JOIN 可以让您在一个点上连接您正在查询的表。此时您可以查询表之间的任何类型的关系。

如果为 1,此查询将为您返回匹配记录userid中的所有 s ,否则为 NULL。tish_usertish_images.prof_imageprof_image

SELECT 
    tish_user.user_id, 
    tish_images.prof_image 
FROM
    tish_user 
LEFT JOIN tish_images
ON tish_user.user_id = tish_images.user_id
AND tish_images.prof_image = 1
于 2013-02-22T10:04:23.923 回答
1

尝试这个:

假设您要显示 tish_user 表中的用户 ID、名字和姓氏以及 tish_images 表中的 prof_image。

  SELECT tish_user.userd_id, tish_user.firstname, tish_user.lastname, tish_images.prof_image
FROM tish_user tish_user LEFT JOIN tish_image tish_image ON tish_user.user_id=tish_images.user_id WHERE tish_image.prof_image=1

我认为这会做到。

于 2013-02-28T00:52:43.977 回答
1

使用LEFT JOIN代替INNER JOIN.

SELECT * FROM
tish_user LEFT JOIN tish_images
ON tish_user.user_id = tish_images.user_id
WHERE tish_images.prof_image = 1

解释

LEFT JOIN 选择左表中的所有行,即使右表中没有条目(在这种情况下,右表的列将是NULL

还要检查 RIGHT JOIN,它对右侧做同样的事情 :)

于 2013-02-22T10:03:36.350 回答
1

尝试这个:

SELECT *
FROM
 tish_user U
    LEFT JOIN tish_images I
 ON U.user_id = I.user_id
   AND = I.prof_image = 1 
于 2013-02-22T10:03:46.840 回答
1

试试这个方法

SELECT * FROM
tish_user, tish_images
WHERE tish_user.user_id = tish_images.user_id
AND
tish_images.prof_image = 1;

我想这可能会对你有所帮助。

干杯兄弟

于 2013-02-22T11:26:36.097 回答