SQL是否能够做到这一点:SELECT * FROM table WHERE column = everything
答案 0 :(得分:23)
SELECT * FROM table
如果你动态生成SQL,那就是
SELECT * FROM table WHERE 1=1
1=1
占位符允许您返回所有记录,或者在您返回子集或需要其他条件语句时替换实际条件。
另见
Why would someone use WHERE 1=1 AND <conditions> in a SQL clause?
答案 1 :(得分:18)
你的问题允许三个代表:
WHERE column IS NOT nULL
SELECT * FROM table WHERE column LIKE '%$searchterm%'
答案 2 :(得分:10)
一切还是其他什么?
我猜你可以使用通配符。
SELECT * FROM table WHERE column LIKE "%"
答案 3 :(得分:6)
对于出于任何原因需要查询中列名称的任何人,SELECT * FROM table WHERE column = column
这与WHERE 1=1
非常相似,但是它包含列名,这是我的解决方案所必需的,也许还有一些其他列名也需要。
答案 4 :(得分:4)
您可以在查询中使用列名本身
SELECT * FROM TABLE WHERE COLUMN = COLUMN
例如:
SELECT * FROM Student WHERE YEAR = YEAR
或使用辅助参数:
SELECT * FROM Student WHERE YEAR = (CASE WHEN @year IS NOT NULL THEN @year ELSE YEAR END)
所以您可以按住“ =” char
答案 5 :(得分:2)
这已经很晚了但可能对其他人有所帮助
你可以试试这个。
where
isnull([column], '') = CASE WHEN @column IS NULL THEN isnull([column], '') ELSE @column END
答案 6 :(得分:1)
您是否正在寻找IN标准运营商? SELECT * from table where(1,2,3,4,5)中的列或('value','value2','value3')中的列;
答案 7 :(得分:1)
SELECT TIME_B,
EVENT_B,
CONNECT_BY_ROOT( TIME_A ) AS TIME_A,
CONNECT_BY_ROOT( EVENT_A ) AS EVENT_A
FROM (
SELECT A.*,
B.*,
ROW_NUMBER() OVER ( ORDER BY TIME_B ) AS rn
FROM tableB B
LEFT OUTER JOIN tableA A
ON ( B.TIME_B = A.TIME_A AND A.EVENT_A = 'a0' )
)
WHERE LEVEL <= 2
START WITH EVENT_A IS NOT NULL
CONNECT BY PRIOR rn -2 <= rn AND rn < PRIOR rn
ORDER BY time_a, time_b
答案 8 :(得分:0)
如果这可以帮助任何人...只是指出,如果您遇到诸如SELECT * FROM WHERE(可能是特定的或所有内容)之类的问题,例如过滤内容,
你可以用
SELECT * FROM something as s WHERE (?1 = 0 OR ?1 = s.type = ?1)
这里的0只是所有对象的预定义,因此随时可以更改,我在使用带有Hibernate的JPA存储库进行过滤时需要此设置。由于准备好的语句的安全性,因此您无法按照上一个答案的建议进行医学操作。 ?1对应于:
Page<Something> filterSometing(Long type,Pageable pageable);
答案 9 :(得分:0)
我也遇到了同样的问题,以下解决了我的问题:
... where column = case when @variable = 'all' then column else @variable end
请记住,您必须始终发送默认值 ,我将默认值设置为“全部”。因此,如果我设置
@variable = 'all'
,mysql会将其读取为:where column = column
与where 1=1
答案 10 :(得分:0)
我在开发动态组成查询时遇到了这个问题。 简而言之,这是我的解决方案:
WHERE (column = ANY (SELECT distinct column) OR column IS NULL)
这适用于NULL值,实际上与空WHERE语句相同。我使用方括号以保持使用AND运算符添加更多WHERE选项的能力。
这意味着:
select count("objectId"), "source"
from "SomeTable"
where "createdAt" > '2020-07-06'
and ("source" = any (select distinct "source") or "source" is null)
and ("country" = any (select distinct "country") or "country" is null)
and "channel" is not null
group by "source"
等于此:
select count("objectId"), "source"
from "SomeTable"
where "createdAt" > '2020-07-06'
and "channel" is not null
group by "source"
所以我可以制作一个查询模板:
...
WHERE (column = {{filter_value}} )
...
并将ANY (SELECT distinct column) OR column IS NULL)
设置为{{filter_value}}的默认值
答案 11 :(得分:0)
将猫王运算符放入该字段
" . ($variable == 'selected value' ? '' : "AND column='" . $variable . "' ") . "
因此您在html页面的所有选项中都选择了该^^字段将不会运行 但是当您选择某些内容时,此代码将显示为column ='“。$ variable。”'