Ich frage mich, wie man SQL-Abfrage erstellt, um Nachrichten nur von Leuten zu erhalten, denen ich folge. Ich nehme an, dass das Erstellen einer SQL-Join-Abfrage der richtige Weg ist, aber ich weiß nicht wie. Könnte mir bitte jemand helfen?SQL, um Nachrichten nur von Leuten zu erhalten, denen ich folge
Ich habe diese drei Tabellen jetzt:
CREATE TABLE `users` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`username` VARCHAR(255) NOT NULL ,
`email` VARCHAR(255) NOT NULL ,
`password` VARCHAR(8) NOT NULL ,
`status` ENUM('active', 'inactive') NOT NULL
) ENGINE = MYISAM ;
CREATE TABLE `posts` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`user_id` INT NOT NULL ,
`body` VARCHAR(140) NOT NULL ,
`stamp` DATETIME NOT NULL
) ENGINE = MYISAM ;
CREATE TABLE `following` (
`user_id` INT NOT NULL ,
`follower_id` INT NOT NULL ,
PRIMARY KEY (`user_id` , `follower_id`)
) ENGINE = MYISAM ;
Ihnen sehr für Ihre Antwort danken.
Ich denke, eine Verbindung kann eine bessere Leistung erbringen. –
Im Allgemeinen keine. Dies war ein Leistungsfehler in SQL Server 2000 (und möglicherweise anderen SQL-Anweisungen), den viele Benutzer dieser Version irrtümlicherweise als allgemeine Faustregel für SQL erkannt haben. Es gibt keinen logischen Grund dafür, dass IN langsamer ist als ein Join (es muss tatsächlich weniger Arbeit machen) und wie Joe Celko vor einigen Jahren schrieb, ist es im Allgemeinen nicht so. Auch in SQL Server 2005+ sind IN-basierte Subselects fast immer genau die gleichen wie ein Join oder sie haben nur marginale Leistungsunterschiede. – RBarryYoung
Danke für die Information. Gilt das auch für "exits" -basierte Subselects? –