我想从 2 个不同的表中进行选择。
在第一个表中,我想全选,但我只会显示我想要的。
在第二个表中,我只想选择个人资料图片,但即使用户没有个人资料图片,也应该选择用户表中的数据。
我正在使用内部连接。下面是我的代码:
SELECT * FROM
tish_user INNER JOIN tish_images
ON tish_user.user_id = tish_images.user_id
WHERE tish_images.prof_image = 1
要从两个不同的表中进行选择,您应该从每个表中指定所需的值,而不是使用 catch-all *
。使用 LEFT JOIN 而不是 INNER JOIN 可以让您在一个点上连接您正在查询的表。此时您可以查询表之间的任何类型的关系。
如果为 1,此查询将为您返回匹配记录userid
中的所有 s ,否则为 NULL。tish_user
tish_images.prof_image
prof_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
尝试这个:
假设您要显示 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
我认为这会做到。
使用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,它对右侧做同样的事情 :)
尝试这个:
SELECT *
FROM
tish_user U
LEFT JOIN tish_images I
ON U.user_id = I.user_id
AND = I.prof_image = 1
试试这个方法
SELECT * FROM
tish_user, tish_images
WHERE tish_user.user_id = tish_images.user_id
AND
tish_images.prof_image = 1;
我想这可能会对你有所帮助。
干杯兄弟