primaryNum、secondaryNum、chosenNumの3つの列を持つテーブルがあるとします。primarynumとsecondaryNumはどちらも数値ですが、chosenNumの値は、「primaryNum」、「secondaryNum」、または「both」のいずれかになります。
selectedNumフィールドは、特定のフィールドで数値を検索するオプションを提供する列です。
例:chosenNumに格納されている列の値が10のすべての行を検索したい場合があります。selectedNumの値が「both」の場合、いずれかの列(primaryNum、secondaryNum)の値が10の場合、行が返されます。
私のselectステートメントはどのように見えるでしょうか?
次のようなselectステートメントを実行したい場合は、より良いシナリオになる可能性があります。
SELECT * FROM aTable WHERE(SELECT bVal FROM bTable WHERE aVal = @varField)= 0;
ここで、@ varFieldは、chosenNumにラベルが格納されているフィールドの値、またはchosenNum="both"の場合はいずれかのフィールドの値です。
これにより、IDが1、2、3、4、6、7、14、15、16、19、20、21、23、24、27の行が返されます。
表A:作成
CREATE TABLE `test`.`aTable` (
`id` INT NOT NULL AUTO_INCREMENT ,
`primaryNum` INT NULL ,
`secondaryNum` INT NULL ,
`chosenNum` CHAR(12) NULL ,
PRIMARY KEY (`id`) );
表B:作成
CREATE TABLE `test`.`bTable` (
`aVal` INT NULL ,
`bVal` INT NULL );
表A:データ
INSERT INTO test.aTable VALUES (1,8,7,'secondaryNum'),(2,2,9,'secondaryNum'),(3,7,9,'both'),(4,5,1,'both'),(5,10,3,'secondaryNum'),(6,10,6,'both'),(7,7,8,'both'),(8,10,2,'primaryNum'),(9,2,1,'secondaryNum'),(10,7,2,'secondaryNum'),(11,2,2,'secondaryNum'),(12,5,1,'secondaryNum'),(13,1,6,'primaryNum'),(14,6,6,'both'),(15,4,9,'both'),(16,9,7,'primaryNum'),(17,8,3,'secondaryNum'),(18,10,7,'primaryNum'),(19,8,5,'secondaryNum'),(20,1,7,'both'),(21,7,9,'both'),(22,8,3,'primaryNum'),(23,6,2,'primaryNum'),(24,5,7,'both'),(25,2,1,'both'),(26,5,2,'secondaryNum'),(27,7,8,'primaryNum');
表B:データ
INSERT INTO test.bTable VALUES (1,1),(2,1),(3,1),(4,1),(5,0),(6,0),(7,0),(8,1),(9,0),(10,1);