2013-03-18 32 views
2

我有一个忽略WHERE函数部分的SQL查询。SQL在搜索不同列时忽略WHERE

SELECT col1, col2, col3, col4 
FROM table 
WHERE col1 = 'yes' 
AND col2 = 'no' 
AND col3 || col4 
LIKE '%maybe%' 

没有最后AND功能它带回正确的行,但与LIKE功能将带回行用的“否” col1

+2

DBMS是什么这一点,MySQL的? – PinnyM 2013-03-18 15:58:26

+0

它是phpMyAdmin? – Sjrsmile 2013-03-18 16:00:18

+2

phpMyAdmion不是数据库管理系统,只是其他事物(通常是MySQL)的前端 – PinnyM 2013-03-18 16:01:08

回答

6

我将让你想要的是LIKE语句来分发的猜测 - 在这种情况下,你想:

SELECT col1, col2, col3, col4 
FROM table 
WHERE col1 = 'yes' 
AND col2 = 'no' 
AND (col3 LIKE '%maybe%' OR col4 LIKE '%maybe%') 
+0

这非常好,花了我一点时间将它实现到网站上,并检查它,但工程现在。干杯! – Sjrsmile 2013-03-18 17:13:15

1

如果你想连接col3col4,在MySQL正确的语法是使用CONCAT功能:

SELECT 
    col1, col2, col3, col4 
FROM 
    table 
WHERE 
    col1 = 'yes' 
    AND col2 = 'no' 
    AND CONCAT(col3, col4) LIKE '%maybe%' 

而||是OR运算符。

请参阅小提琴here

+0

SQL方言可能会有所不同。 Oracle使用'||'字符串连接的运算符。 – Pekka 2013-03-18 20:26:23

+0

@Pekka in oracle ||是字符串连接的运算符,我认为OP正在尝试将oracle语法转换为mysql,但他正在寻找一个OR,而不是 – fthiella 2013-03-18 22:36:21