Table1 の Data_ID が Table2 に存在しない、Table1 から 1つのランダムな行を選択しようとしています。
投稿 (画像) に投票できるサイトを構築しています。このページでは、投票されていない投稿のみが表示されます。
これが私の2つのテーブルの簡単な構造です:
CREATE TABLE IF NOT EXISTS `Table1` (
`Id` int(10) NOT NULL AUTO_INCREMENT,
`Data_ID` varchar(10) NOT NULL,
PRIMARY KEY (`Id`),
UNIQUE KEY `Id` (`Id`,`Data_ID`),
UNIQUE KEY `Data_ID` (`Data_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=4389 ;
CREATE TABLE IF NOT EXISTS `Table2` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`Data_ID` varchar(10) NOT NULL,
`IP` varchar(20) NOT NULL,
`Vote_ID` int(4) NOT NULL,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=2314 ;
ありがとう!
編集:
これが私の試みですが、実際にはランダムな投稿は得られません。
SELECT newTable.*
FROM (
SELECT Table1.Id, Table1.Data_ID FROM Table1
LEFT OUTER JOIN Table2
ON Table1.Data_ID = Table2.Data_ID
WHERE Table2.Data_ID IS null
) as newTable
WHERE newTable.Id >= ROUND( RAND() * (SELECT MAX(Id) FROM Table1)) LIMIT 1;