2

以前にこのクエリを使用したことがあります。

SELECT * 
FROM stone_list 
WHERE type IN ('ALEXANDRITE','AMETHYST') 
   AND shape IN ('OVAL') ORDER BY type, shape

以前はうまくいきましたが、今回だけは非常に奇妙なことをします。shape の値が 1 つしかない場合、INクエリは type isALEXANDRITEおよび shape isの結果のみを返します。OVALtype = AMETHYST and shape = OVAL

ここで、たとえば、2 番目の形状を追加すると、とshape IN ('OVAL','ROUND')の両方の値が返されます(したがって、期待どおりに機能します)。type = ALEXANDRITE and type = AMETHYSTshape = OVAL and shape = ROUND

本当に私を打ち負かします。

アイデアのある人はいますか?

ありがとう!

4

1 に答える 1

1

クエリに問題はありませんので、質問から見落としまたは省略したものがあるとしか思えません。

mysql> select * from stone_list;
+----+-------------+--------+
| id | type        | shape  |
+----+-------------+--------+
|  1 | ALEXANDRITE | OVAL   |
|  2 | ALEXANDRITE | ROUND  |
|  3 | BASILIC     | OVAL   |
|  4 | AMETHYST    | SQUARE |
|  5 | AMETHYST    | ROUND  |
|  6 | AMETHYST    | OVAL   |
+----+-------------+--------+
6 rows in set (0.00 sec)


mysql> SELECT * FROM stone_list WHERE type IN ('ALEXANDRITE','AMETHYST') AND shape IN ('OVAL') ORDER BY type, shape
    -> ;
+----+-------------+-------+
| id | type        | shape |
+----+-------------+-------+
|  1 | ALEXANDRITE | OVAL  |
|  6 | AMETHYST    | OVAL  |
+----+-------------+-------+
2 rows in set (0.00 sec)


mysql> describe stone_list;
+-------+------------------+------+-----+---------+----------------+
| Field | Type             | Null | Key | Default | Extra          |
+-------+------------------+------+-----+---------+----------------+
| id    | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| type  | varchar(50)      | YES  |     | NULL    |                |
| shape | varchar(50)      | YES  |     | NULL    |                |
+-------+------------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)
于 2012-04-09T01:55:14.527 に答える