Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

MYSQL syntax for OR?

Tags:

php

mysql

I have a mysql table with 2 columns and a set of values called MAIN. table1:

col1, int(11)
col2, int(11)

Set of values: MAIN: 1,3,4

col1 and col2 contain random integers between 1 and 10 for 1000 rows. Then, any rows where col1 and col1 contain the SAME integer are removed.

I'm trying to pull those rows from table1 where: col1 contains values from MAIN and col2 does not. AND col2 contains values from MAIN and col1 does not.

in invented pseudo code I have:

mysql_query("SELECT col1,col2 
             FROM table1 
             WHERE (col1 contains values from MAIN and col2 does not) 
             OR (col2 contains values from MAIN and col1 does not) ");

Any ideas on what the correct syntax is for this?

P.S. The set of values starts as a PHP array.

like image 502
David19801 Avatar asked Aug 08 '26 08:08

David19801


1 Answers

Perhaps you're looking for the XOR logical operator?

SELECT
  col1,
  col2
FROM
  table1
WHERE
  ( col1 IN ( 1, 3, 4 ) XOR col2 IN ( 1, 3, 4 ) );

Small example of how XOR works:

SELECT true XOR true; -- false
SELECT true XOR false; -- true
SELECT false XOR true; -- true
SELECT false XOR false; -- false

That's pretty much your whole ( col1 in ( MAIN ) and col2 not in main ) OR ( col1 not in ( MAIN ) and col2 in ( main ) ), but written more succinct ;)

like image 66
Berry Langerak Avatar answered Aug 10 '26 20:08

Berry Langerak