Yes, Mysql 5+ supports sub selects. Additionally if you use innodb
tables you get transaction support.
Duane
On Jan 26, 2007, at 11:58 AM, Susan Teague Rector wrote:
> I'm not surprised that MySQL doesn't support set operations.
> In general, MySQL seems to have a limited set of SQL operators.
> That may
> have changed but...until recently, you couldn't do sub selects, etc.
>
> I've been able to do many more adv SQL oeprations such as set
> operators
> / correlated subqueries, etc.
> in Oracle than in MySQL.
>
> Maybe newer versions of MySQL support these more advanced operations?
>
> Jeffrey Barnett wrote:
>> I must admit I've never used MySQL, but the set operations are
>> part of
>> the SQL92 standard. I've used them in both Oracle and DB/2, and I
>> think
>> Access, but I'm not sure. I often work with *very* large result sets
>> (millions), and the "IN SELECT()" notation has limits in the few
>> thousands. There are no such limits on MINUS, or at least none
>> that I
>> have run into.
>>
>> Ken Irwin wrote:
>>> The MySQL online documentation doesn't include a MINUS command,
>>> just a
>>> bunch of reference to minus signs (-).
>>> Thankfully, there's more than one way to do this!
>>>
>>> Also: having these handy new tools, I'm revisiting some old, cludgy
>>> code, and I wonder if it's possible to use LIKE with the results
>>> of a
>>> subquery, eg.:
>>> SELECT * FROM table WHERE ip [NOT LIKE ANYTHING IN] (SELECT ip_range
>>> FROM known_ips)
>>> where [NOT LIKE ANYTHING IN] is probably some different wording.
>>>
>>> I have script that combs through our logs to weed out spiders,
>>> bots and
>>> whatnot, and it references a table full of known good IPs that are
>>> definitely real users. Right now I have this hideous long query that
>>> includes a "WHERE ip not like '136.227.%' and ip not like
>>> '123.345.%'
>>> and...". If there's a way to similarly slim down this statement,
>>> I would
>>> love to find it.
>>>
>>> I have a feeling the SQL has much vaster powers than I know how to
>>> harness!
>>>
>>> thanks,
>>> Ken
>>>
>>> Jonathan Gorman wrote:
>>>> Last I checked MySQL doesn't support MINUS, but it's been a few
>>>> years
>>>> since I used it. I vaguly remember talk about the developers
>>>> planning on
>>>> adding it. I took a quick glance at the docs, but I can't seem
>>>> to find
>>>> anything one way or another. Is it in one of the later versions of
>>>> MySQL?
>>>>
>>>>
>>>> On Fri, 26 Jan 2007, Jeffrey Barnett wrote:
>>>>
>>>>> You have gotten a lot of suggestions, but here is one more.
>>>>>
>>>>> select * from lib_books where good_thing = 'TRUE'
>>>>> MINUS
>>>>> select * from lib_books where bad_thing = 'TRUE'
>>>>>
>>>>> I think MINUS is faster than JOIN.
>>>>>
>>>>> Other SET OPERATIONS include UNION and INTERSECT.
>>>>>
>>>>> Set operations require that the underlying result sets be
>>>>> "compatible":
>>>>> Same number of columns.
>>>>> Corresponding columns have matching datatypes.
>>>>>
>>>>>
>>>>> Ken Irwin wrote:
>>>>>> Hi all,
>>>>>>
>>>>>> Thanks for these myriad responses! I've gotten at least three
>>>>>> distinct
>>>>>> approaches to try. I knew there had to be a better way.
>>>>>>
>>>>>> your sql-fu is appreciated!
>>>>>>
>>>>>> joys
>>>>>> Ken
>>>>>
>>>
>>> --
>>> Ken Irwin
>>> Reference Librarian
>>> Thomas Library, Wittenberg University
>
> --
> Susan Teague Rector
> Web Applications Manager
> VCU Libraries: Library Information Systems
> 804.827.3554 | [log in to unmask]
|