Hi Neil, all!

Tompkins Neil wrote:
> Hi
> 
> With a SELECT * FROM my_table WHERE record_id IN (3,4,5,6,7,3), how can I
> return two records for the record_id 3 ?  Is it possible ?

This is a case where you may safely use natural language and logic. The
command is

  SELECT all fields FROM the records in "mytable" FOR WHICH THE
    FOLLOWING CONDITION IS TRUE:
      the field "record_id" has a value which is IN the list 3, 4, 5, 6,
        7, 3

The condition can only evaluate to "true" or "false" (ignoring NULL
values and the "unknown" truth value for now), and for that evaluation
it does not matter whether a matching value appears in your list only
once or repeatedly.

To achieve your desired effect, you might use a generator to create a
UNION statement. Roughly, the approach would be ("+=" means appending to
a string):

  value = first value of the list;
  statement = "SELECT * FROM my_table WHERE record_id = $value";

  while (there are more values in the list)
  do
      value = next value of the list;
      statement +=
          "UNION SELECT * FROM my_table WHERE record_id = $value";
  done;

  statement += ";";

  execute statement;

Obviously, this will create a huge statement if the value list is long,
and it doesn't seem to be efficient, so I don't recommend this technique
in general.

Before going that route, you should question your assumptions: Why is it
necessary to return the same record twice?


Jörg

-- 
Joerg Bruehe,  MySQL Build Team,  joerg.bru...@oracle.com
ORACLE Deutschland B.V. & Co. KG,   Komturstrasse 18a,   D-12099 Berlin
Geschaeftsfuehrer: Juergen Kunz, Marcel v.d. Molen, Alexander v.d. Ven
Amtsgericht Muenchen: HRA 95603


--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/mysql?unsub=arch...@jab.org

Reply via email to