您确实需要更改投票表的结构,以便可以进行正常连接。我强烈建议添加一个纯用户 ID 列,或者至少不要将其作为其他两个列的连接。根据 ID,您可以轻松地执行以下操作:
select
a.userID,
a.firstName,
b.votes
from
entries a
join voting b
on a.userID=b.userID
order by
b.votes desc
另一种选择是考虑(如果它是一对一的关系)简单地将数据合并到一个表中,这将使其再次变得更加容易。
目前,这确实是一个XY问题,您正在寻找一种方法来连接两个不打算连接的表。虽然有(可怕,可怕,可怕)的方法,但我认为最好的解决方案是做一些额外的工作并改变你的数据库(我们当然可以帮助你,这样你就不会丢失任何数据)然后你将能够(轻松地)现在做你想做的事情,并且你将来想做的所有其他事情(你现在不知道)会容易得多。
编辑:这似乎是使用触发器为您插入新行的绝佳机会。MySQL 触发器是数据库在某个预定义操作发生时将执行的操作。在这种情况下,您希望在将行插入主表时将新行插入表中。美妙之处在于您可以使用对原始表中数据的引用来执行此操作:
CREATE TRIGGER Entries_Trigger AFTER insert ON Entries
FOR EACH ROW BEGIN
insert into Voting values(new.UserID,0,0);
END;
这将以以下方式工作 - 当一行插入到您的 Entries 表中时,数据库将插入该行(创建 auto_increment ID 等)然后立即调用此触发器,然后将使用新创建的 UserID 插入第二个表(以及一些投票和 nvotes 的零)。